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 @@
package cc.niushuai.dididone.biz; package cc.niushuai.dididone.biz;
import androidx.appcompat.view.ActionBarPolicy; import org.json.JSONArray;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@ -8,6 +8,7 @@ import java.util.Map;
import cc.niushuai.dididone.biz.entity.Project; import cc.niushuai.dididone.biz.entity.Project;
import cc.niushuai.dididone.biz.roomx.DBManager; import cc.niushuai.dididone.biz.roomx.DBManager;
import cc.niushuai.dididone.biz.vo.ProjectCount;
import cc.niushuai.dididone.util.XLog; import cc.niushuai.dididone.util.XLog;
import io.reactivex.Flowable; import io.reactivex.Flowable;
import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.android.schedulers.AndroidSchedulers;
@ -21,6 +22,7 @@ public class BizGlobal {
public static final String PROJECT_ICON = "projectIcon"; public static final String PROJECT_ICON = "projectIcon";
public static final String PROJECT_ICON_COLOR = "projectIconColor"; public static final String PROJECT_ICON_COLOR = "projectIconColor";
public static final Map<Long, Project> CACHE_PROJECT = new HashMap<>(); public static final Map<Long, Project> CACHE_PROJECT = new HashMap<>();
public static final Map<Long, Integer> CACHE_PROJECT_COUNT = new HashMap<>();
private BizGlobal() { private BizGlobal() {
} }
@ -28,7 +30,26 @@ public class BizGlobal {
public static int REQUEST_CODE_GENERAL = 1; public static int REQUEST_CODE_GENERAL = 1;
public static void buildCache() { public static void buildCache() {
// 打卡项缓存
buildProjectCache(); 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() { private static void buildProjectCache() {
@ -38,10 +59,10 @@ public class BizGlobal {
.subscribe(projectList -> { .subscribe(projectList -> {
for (Project project : projectList) { for (Project project : projectList) {
CACHE_PROJECT.put(project.getId(), project); 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;
import java.util.List; import java.util.List;
import cc.niushuai.dididone.biz.entity.Record; import cc.niushuai.dididone.biz.entity.Record;
import cc.niushuai.dididone.biz.vo.ProjectCount;
import io.reactivex.Completable; import io.reactivex.Completable;
import io.reactivex.Flowable; import io.reactivex.Flowable;
@ -31,4 +32,7 @@ public interface RecordDao {
@Delete @Delete
void delete(Record... records); 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 @@
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 {
TextView txtView = holder.getView(R.id.ppv_item_txt); TextView txtView = holder.getView(R.id.ppv_item_txt);
txtView.setText(project.getName()); 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() { commonAdapter.setOnItemClickListener(new MultiItemTypeAdapter.OnItemClickListener() {

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

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?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:id="@+id/ppv_item_layout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -9,15 +10,24 @@
android:id="@+id/ppv_item_icon" android:id="@+id/ppv_item_icon"
android:layout_width="50dp" android:layout_width="50dp"
android:layout_height="50dp" android:layout_height="50dp"
android:layout_centerVertical="true" /> android:layout_centerVertical="true"
/>
<TextView <TextView
android:id="@+id/ppv_item_txt" android:id="@+id/ppv_item_txt"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_centerVertical="true" android:layout_gravity="center_vertical"
android:layout_marginLeft="20dp" android:layout_marginLeft="20dp"
android:layout_toRightOf="@id/ppv_item_icon" android:textSize="18dp"
android:textSize="14dp" /> />
</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