Browse Source

feat: 🚍 布局调整

master
niushuai233 1 year ago
parent
commit
329e9a943b
  1. 27
      app/src/main/java/cc/niushuai/dididone/biz/BizGlobal.java
  2. 4
      app/src/main/java/cc/niushuai/dididone/biz/dao/RecordDao.java
  3. 32
      app/src/main/java/cc/niushuai/dididone/biz/vo/ProjectCount.java
  4. 4
      app/src/main/java/cc/niushuai/dididone/ui/component/ProjectPopupView.java
  5. 22
      app/src/main/res/layout/project_popup_view_item.xml

27
app/src/main/java/cc/niushuai/dididone/biz/BizGlobal.java

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
package cc.niushuai.dididone.biz;
import androidx.appcompat.view.ActionBarPolicy;
import org.json.JSONArray;
import java.util.HashMap;
import java.util.List;
@ -8,6 +8,7 @@ import java.util.Map; @@ -8,6 +8,7 @@ import java.util.Map;
import cc.niushuai.dididone.biz.entity.Project;
import cc.niushuai.dididone.biz.roomx.DBManager;
import cc.niushuai.dididone.biz.vo.ProjectCount;
import cc.niushuai.dididone.util.XLog;
import io.reactivex.Flowable;
import io.reactivex.android.schedulers.AndroidSchedulers;
@ -21,6 +22,7 @@ public class BizGlobal { @@ -21,6 +22,7 @@ public class BizGlobal {
public static final String PROJECT_ICON = "projectIcon";
public static final String PROJECT_ICON_COLOR = "projectIconColor";
public static final Map<Long, Project> CACHE_PROJECT = new HashMap<>();
public static final Map<Long, Integer> CACHE_PROJECT_COUNT = new HashMap<>();
private BizGlobal() {
}
@ -28,7 +30,26 @@ public class BizGlobal { @@ -28,7 +30,26 @@ public class BizGlobal {
public static int REQUEST_CODE_GENERAL = 1;
public static void buildCache() {
// 打卡项缓存
buildProjectCache();
// 按类别区分每一个打卡项 存在多少条打卡记录
buildProjectCountCache();
}
private static void buildProjectCountCache() {
Flowable<List<ProjectCount>> listFlowable = DBManager.INSTANCE.recordDao().groupCountProject();
listFlowable.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(projectCountList -> {
for (ProjectCount projectCount : projectCountList) {
CACHE_PROJECT_COUNT.put(projectCount.getId(), projectCount.getCount());
XLog.d("build project {}:{} cache", projectCount.getName(), projectCount.getCount());
}
XLog.d("build project count cache size: {}", projectCountList.size());
});
}
private static void buildProjectCache() {
@ -38,10 +59,10 @@ public class BizGlobal { @@ -38,10 +59,10 @@ public class BizGlobal {
.subscribe(projectList -> {
for (Project project : projectList) {
CACHE_PROJECT.put(project.getId(), project);
XLog.d("build {} cache", project.getName());
XLog.d("build project {} cache", project.getName());
}
XLog.d("build cache size: {}", projectList.size());
XLog.d("build project cache size: {}", projectList.size());
});
}
}

4
app/src/main/java/cc/niushuai/dididone/biz/dao/RecordDao.java

@ -8,6 +8,7 @@ import androidx.room.Query; @@ -8,6 +8,7 @@ import androidx.room.Query;
import java.util.List;
import cc.niushuai.dididone.biz.entity.Record;
import cc.niushuai.dididone.biz.vo.ProjectCount;
import io.reactivex.Completable;
import io.reactivex.Flowable;
@ -31,4 +32,7 @@ public interface RecordDao { @@ -31,4 +32,7 @@ public interface RecordDao {
@Delete
void delete(Record... records);
@Query("select b.id, b.name, count(a.id) as count from t_record a left join t_project b on b.id = a.project_id and b.deleted = 0 where a.deleted = 0 group by b.id, b.name")
Flowable<List<ProjectCount>> groupCountProject();
}

32
app/src/main/java/cc/niushuai/dididone/biz/vo/ProjectCount.java

@ -0,0 +1,32 @@ @@ -0,0 +1,32 @@
package cc.niushuai.dididone.biz.vo;
public class ProjectCount {
private Long id;
private String name;
private Integer count;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getCount() {
return count;
}
public void setCount(Integer count) {
this.count = count;
}
}

4
app/src/main/java/cc/niushuai/dididone/ui/component/ProjectPopupView.java

@ -85,6 +85,10 @@ public class ProjectPopupView extends BottomPopupView { @@ -85,6 +85,10 @@ public class ProjectPopupView extends BottomPopupView {
TextView txtView = holder.getView(R.id.ppv_item_txt);
txtView.setText(project.getName());
TextView descView = holder.getView(R.id.ppv_item_desc);
String count = BizGlobal.CACHE_PROJECT_COUNT.getOrDefault(project.getId(), 0).toString();
descView.setText(StrUtil.format("累计打卡{}次", count));
}
};
commonAdapter.setOnItemClickListener(new MultiItemTypeAdapter.OnItemClickListener() {

22
app/src/main/res/layout/project_popup_view_item.xml

@ -1,5 +1,6 @@ @@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/ppv_item_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
@ -9,15 +10,24 @@ @@ -9,15 +10,24 @@
android:id="@+id/ppv_item_icon"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_centerVertical="true" />
android:layout_centerVertical="true"
/>
<TextView
android:id="@+id/ppv_item_txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_gravity="center_vertical"
android:layout_marginLeft="20dp"
android:layout_toRightOf="@id/ppv_item_icon"
android:textSize="14dp" />
android:textSize="18dp"
/>
</RelativeLayout>
<TextView
android:id="@+id/ppv_item_desc"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:gravity="right"
android:layout_marginRight="20dp"
android:textSize="12dp"/>
</LinearLayout>
Loading…
Cancel
Save