Browse Source

feat: 🚀初版完成

dev-calendar-view
niushuai233 1 year ago
parent
commit
e8731dc5d1
  1. 2
      app/build.gradle
  2. 70
      app/schemas/cc.niushuai.didicheck.biz.room.DiDiCheckDataBase/1.json
  3. 70
      app/schemas/cc.niushuai.didicheck.biz.room.DiDiCheckDataBase/2.json
  4. 4
      app/src/main/AndroidManifest.xml
  5. 9
      app/src/main/java/cc/niushuai/didicheck/MainActivity.java
  6. 38
      app/src/main/java/cc/niushuai/didicheck/biz/dao/CheckRecordDao.java
  7. 33
      app/src/main/java/cc/niushuai/didicheck/biz/entity/CheckRecord.java
  8. 41
      app/src/main/java/cc/niushuai/didicheck/biz/room/DBManager.java
  9. 13
      app/src/main/java/cc/niushuai/didicheck/biz/room/DiDiCheckDataBase.java
  10. 17
      app/src/main/java/cc/niushuai/didicheck/ui/main/TabsPagerAdapter.java
  11. 96
      app/src/main/java/cc/niushuai/didicheck/ui/main/home/HomeFragment.java
  12. 49
      app/src/main/java/cc/niushuai/didicheck/ui/main/home/HomeRecycleViewAdapter.java
  13. BIN
      app/src/main/res/mipmap-hdpi/ic_app.png
  14. BIN
      app/src/main/res/mipmap-mdpi/ic_app.png
  15. BIN
      app/src/main/res/mipmap-xhdpi/ic_app.png
  16. BIN
      app/src/main/res/mipmap-xxhdpi/ic_app.png
  17. BIN
      app/src/main/res/mipmap-xxxhdpi/ic_app.png
  18. BIN
      icon/checkin.png

2
app/build.gradle

@ -62,6 +62,8 @@ dependencies { @@ -62,6 +62,8 @@ dependencies {
def room_version = '2.6.1'
implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version"
implementation "androidx.room:room-rxjava2:$room_version"
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
// room分页组件
implementation "androidx.room:room-paging:$room_version"
}

70
app/schemas/cc.niushuai.didicheck.biz.room.DiDiCheckDataBase/1.json

@ -0,0 +1,70 @@ @@ -0,0 +1,70 @@
{
"formatVersion": 1,
"database": {
"version": 1,
"identityHash": "2a46dc7add9af1cfb97918cdfe07c10d",
"entities": [
{
"tableName": "t_check_record",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER, `check_type` TEXT, `name` TEXT, `check_date` INTEGER, `description` TEXT, `create_date` INTEGER, `deleted` INTEGER, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "checkType",
"columnName": "check_type",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "name",
"columnName": "name",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "checkDate",
"columnName": "check_date",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "description",
"columnName": "description",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "createDate",
"columnName": "create_date",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "deleted",
"columnName": "deleted",
"affinity": "INTEGER",
"notNull": false
}
],
"primaryKey": {
"autoGenerate": false,
"columnNames": [
"id"
]
},
"indices": [],
"foreignKeys": []
}
],
"views": [],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '2a46dc7add9af1cfb97918cdfe07c10d')"
]
}
}

70
app/schemas/cc.niushuai.didicheck.biz.room.DiDiCheckDataBase/2.json

@ -0,0 +1,70 @@ @@ -0,0 +1,70 @@
{
"formatVersion": 1,
"database": {
"version": 2,
"identityHash": "2a46dc7add9af1cfb97918cdfe07c10d",
"entities": [
{
"tableName": "t_check_record",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER, `check_type` TEXT, `name` TEXT, `check_date` INTEGER, `description` TEXT, `create_date` INTEGER, `deleted` INTEGER, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "checkType",
"columnName": "check_type",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "name",
"columnName": "name",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "checkDate",
"columnName": "check_date",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "description",
"columnName": "description",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "createDate",
"columnName": "create_date",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "deleted",
"columnName": "deleted",
"affinity": "INTEGER",
"notNull": false
}
],
"primaryKey": {
"autoGenerate": false,
"columnNames": [
"id"
]
},
"indices": [],
"foreignKeys": []
}
],
"views": [],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '2a46dc7add9af1cfb97918cdfe07c10d')"
]
}
}

4
app/src/main/AndroidManifest.xml

@ -6,9 +6,9 @@ @@ -6,9 +6,9 @@
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:icon="@mipmap/ic_app"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:roundIcon="@mipmap/ic_app"
android:supportsRtl="true"
android:theme="@style/Theme.DiDiCheck"
tools:targetApi="31">

9
app/src/main/java/cc/niushuai/didicheck/MainActivity.java

@ -10,10 +10,10 @@ import androidx.viewpager.widget.ViewPager; @@ -10,10 +10,10 @@ import androidx.viewpager.widget.ViewPager;
import com.github.clans.fab.FloatingActionButton;
import com.github.clans.fab.FloatingActionMenu;
import cc.niushuai.didicheck.biz.enums.CheckTypeEnum;
import cc.niushuai.didicheck.biz.room.DBManager;
import cc.niushuai.didicheck.databinding.ActivityMainBinding;
import cc.niushuai.didicheck.ui.main.TabsPagerAdapter;
import cc.niushuai.didicheck.util.Toasts;
import cn.hutool.core.date.DateUtil;
public class MainActivity extends AppCompatActivity {
@ -25,6 +25,9 @@ public class MainActivity extends AppCompatActivity { @@ -25,6 +25,9 @@ public class MainActivity extends AppCompatActivity {
context = this;
super.onCreate(savedInstanceState);
// 初始化数据库
DBManager.init(this);
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
@ -48,7 +51,7 @@ public class MainActivity extends AppCompatActivity { @@ -48,7 +51,7 @@ public class MainActivity extends AppCompatActivity {
swimActionButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toasts.shortShow(context, DateUtil.now() + swimActionButton.getLabelText() + "打卡完成");
tabsPagerAdapter.getHomeFragment().add2Top(CheckTypeEnum.QUICK_ADD, "游泳");
// 打卡完成 关闭动画
didiCheckMenu.close(true);
}

38
app/src/main/java/cc/niushuai/didicheck/biz/dao/CheckRecordDao.java

@ -0,0 +1,38 @@ @@ -0,0 +1,38 @@
package cc.niushuai.didicheck.biz.dao;
import androidx.room.Dao;
import androidx.room.Delete;
import androidx.room.Insert;
import androidx.room.Query;
import java.util.List;
import cc.niushuai.didicheck.biz.entity.CheckRecord;
import io.reactivex.Completable;
import io.reactivex.Flowable;
@Dao
public interface CheckRecordDao {
@Query("SELECT * FROM t_check_record")
Flowable<List<CheckRecord>> listAll();
@Query("select * from t_check_record where deleted = 0 and check_date = :date")
Flowable<List<CheckRecord>> queryByDate(long date);
@Query("select * from t_check_record where deleted = 0 and create_date >= :startDate and create_date <= :endDate ")
Flowable<List<CheckRecord>> queryByDate(long startDate, long endDate);
@Insert
Completable insertAll(CheckRecord... records);
@Delete
void delete(CheckRecord record);
@Delete
void delete(CheckRecord... records);
}

33
app/src/main/java/cc/niushuai/didicheck/biz/entity/CheckRecord.java

@ -1,16 +1,33 @@ @@ -1,16 +1,33 @@
package cc.niushuai.didicheck.biz.entity;
import java.util.Date;
import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.PrimaryKey;
import cc.niushuai.didicheck.biz.enums.CheckTypeEnum;
@Entity(tableName = "t_check_record")
public class CheckRecord {
@PrimaryKey
private Long id;
@ColumnInfo(name = "check_type")
private CheckTypeEnum checkType;
@ColumnInfo(name = "name")
private String name;
@ColumnInfo(name = "check_date")
private Long checkDate;
@ColumnInfo(name = "description")
private String description;
private Date createDate;
@ColumnInfo(name = "create_date")
private Long createDate;
@ColumnInfo(name = "deleted")
private Integer deleted;
public Long getId() {
@ -37,6 +54,14 @@ public class CheckRecord { @@ -37,6 +54,14 @@ public class CheckRecord {
this.name = name;
}
public Long getCheckDate() {
return checkDate;
}
public void setCheckDate(Long checkDate) {
this.checkDate = checkDate;
}
public String getDescription() {
return description;
}
@ -45,11 +70,11 @@ public class CheckRecord { @@ -45,11 +70,11 @@ public class CheckRecord {
this.description = description;
}
public Date getCreateDate() {
public Long getCreateDate() {
return createDate;
}
public void setCreateDate(Date createDate) {
public void setCreateDate(Long createDate) {
this.createDate = createDate;
}

41
app/src/main/java/cc/niushuai/didicheck/biz/room/DBManager.java

@ -0,0 +1,41 @@ @@ -0,0 +1,41 @@
package cc.niushuai.didicheck.biz.room;
import android.content.Context;
import androidx.room.Room;
import androidx.room.RoomDatabase;
import cc.niushuai.didicheck.biz.dao.CheckRecordDao;
public class DBManager {
public static DBManager INSTANCE;
private Context context;
private DiDiCheckDataBase diDiCheckDataBase;
public DBManager(Context context) {
this.context = context;
}
public static void init(Context context) {
INSTANCE = new DBManager(context);
}
public static RoomDatabase buildDatabase(Context context, Class<? extends RoomDatabase> clazz, String dbName) {
RoomDatabase.Builder<? extends RoomDatabase> databaseBuilder = Room.databaseBuilder(context, clazz, dbName);
databaseBuilder.setJournalMode(RoomDatabase.JournalMode.AUTOMATIC);
return databaseBuilder.build();
}
public DiDiCheckDataBase getDiDiCheckDataBase() {
if (null == diDiCheckDataBase) {
diDiCheckDataBase = (DiDiCheckDataBase) buildDatabase(context, DiDiCheckDataBase.class, "didi_check");
}
return diDiCheckDataBase;
}
public CheckRecordDao checkRecordDao() {
return getDiDiCheckDataBase().checkRecordDao();
}
}

13
app/src/main/java/cc/niushuai/didicheck/biz/room/DiDiCheckDataBase.java

@ -0,0 +1,13 @@ @@ -0,0 +1,13 @@
package cc.niushuai.didicheck.biz.room;
import androidx.room.Database;
import androidx.room.RoomDatabase;
import cc.niushuai.didicheck.biz.dao.CheckRecordDao;
import cc.niushuai.didicheck.biz.entity.CheckRecord;
@Database(entities = {CheckRecord.class}, version = 2)
public abstract class DiDiCheckDataBase extends RoomDatabase {
public abstract CheckRecordDao checkRecordDao();
}

17
app/src/main/java/cc/niushuai/didicheck/ui/main/TabsPagerAdapter.java

@ -22,6 +22,9 @@ public class TabsPagerAdapter extends FragmentPagerAdapter { @@ -22,6 +22,9 @@ public class TabsPagerAdapter extends FragmentPagerAdapter {
private static final int[] TAB_TITLES = new int[]{R.string.tab_home, R.string.tab_records, R.string.tab_settings};
private final Context mContext;
private HomeFragment homeFragment;
private DataListFragment dataListFragment;
public TabsPagerAdapter(Context context, FragmentManager fm) {
super(fm);
mContext = context;
@ -30,9 +33,11 @@ public class TabsPagerAdapter extends FragmentPagerAdapter { @@ -30,9 +33,11 @@ public class TabsPagerAdapter extends FragmentPagerAdapter {
@Override
public Fragment getItem(int position) {
if (position == 0) {
return new HomeFragment();
homeFragment = new HomeFragment();
return homeFragment;
} else if (position == 1) {
return new DataListFragment();
dataListFragment = new DataListFragment();
return dataListFragment;
} else if (position == 2) {
return new DataListFragment();
}
@ -49,4 +54,12 @@ public class TabsPagerAdapter extends FragmentPagerAdapter { @@ -49,4 +54,12 @@ public class TabsPagerAdapter extends FragmentPagerAdapter {
public int getCount() {
return 3;
}
public HomeFragment getHomeFragment() {
return homeFragment;
}
public DataListFragment getDataListFragment() {
return dataListFragment;
}
}

96
app/src/main/java/cc/niushuai/didicheck/ui/main/home/HomeFragment.java

@ -19,14 +19,24 @@ import androidx.recyclerview.widget.DividerItemDecoration; @@ -19,14 +19,24 @@ import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
import org.reactivestreams.Subscription;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import cc.niushuai.didicheck.biz.entity.CheckRecord;
import cc.niushuai.didicheck.biz.enums.CheckTypeEnum;
import cc.niushuai.didicheck.biz.room.DBManager;
import cc.niushuai.didicheck.databinding.FragmentHomeBinding;
import cc.niushuai.didicheck.util.Toasts;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import io.reactivex.Flowable;
import io.reactivex.FlowableSubscriber;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;
public class HomeFragment extends Fragment {
@ -34,6 +44,8 @@ public class HomeFragment extends Fragment { @@ -34,6 +44,8 @@ public class HomeFragment extends Fragment {
private FragmentHomeBinding fragmentHomeBinding;
private HomeRecycleViewAdapter homeRecycleViewAdapter;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@ -46,6 +58,7 @@ public class HomeFragment extends Fragment { @@ -46,6 +58,7 @@ public class HomeFragment extends Fragment {
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
Log.d("Home", "onCreateView");
fragmentHomeBinding = FragmentHomeBinding.inflate(inflater, container, false);
ConstraintLayout rootLayout = fragmentHomeBinding.getRoot();
@ -53,14 +66,25 @@ public class HomeFragment extends Fragment { @@ -53,14 +66,25 @@ public class HomeFragment extends Fragment {
homeTitleTextView.setGravity(Gravity.CENTER);
homeViewModel.getTitle().observe(getViewLifecycleOwner(), value -> homeTitleTextView.setText(value));
homeTitleTextView.setText("未完待续...");
homeViewModel.setSelectDate(new Date());
CalendarView homeMainCalendar = fragmentHomeBinding.homeMainCalendar;
homeMainCalendar.setDate(DateUtil.date().getTime());
homeMainCalendar.setOnDateChangeListener((calendarView, year, month, day) -> {
long date = calendarView.getDate();
Log.d("tagxx", "tag = " + DateUtil.date(date).toDateStr() + ", ==>" + year + month + day);
String format = StrUtil.format("{}-{}-{}", year, month + 1, day);
Log.d("calendar_change", "tag = " + DateUtil.date(date).toDateStr() + ", ==>" + format);
// 缓存选择的日期
homeViewModel.setSelectDate(DateUtil.parseDate(format));
// 刷新数据
refreshDataListByDate(format);
});
// 默认查一次今天的数据
refreshDataListByDate(DateUtil.formatDate(new Date()));
RecyclerView homeDataZoneRecyclerView = fragmentHomeBinding.homeDataZoneRecyclerView;
homeDataZoneRecyclerView.addItemDecoration(new DividerItemDecoration(this.getActivity(), DividerItemDecoration.VERTICAL));
DefaultItemAnimator itemAnimator = new DefaultItemAnimator();
@ -68,33 +92,69 @@ public class HomeFragment extends Fragment { @@ -68,33 +92,69 @@ public class HomeFragment extends Fragment {
itemAnimator.setRemoveDuration(1000);
homeDataZoneRecyclerView.setItemAnimator(itemAnimator);
List<CheckRecord> recordList = new ArrayList<>();
for (int i = 0; i < 50; i++) {
CheckRecord record = new CheckRecord();
record.setId(new Date().getTime());
record.setCheckType(CheckTypeEnum.ADD);
record.setName("recordName" + i);
record.setDescription(null);
record.setDeleted(0);
record.setCreateDate(new Date());
recordList.add(record);
}
HomeRecycleViewAdapter homeRecycleViewAdapter = new HomeRecycleViewAdapter(this.getActivity(), recordList);
homeDataZoneRecyclerView.setAdapter(homeRecycleViewAdapter);
LinearLayoutManager layoutManager = new LinearLayoutManager(this.getActivity());
homeDataZoneRecyclerView.setLayoutManager(layoutManager);
homeRecycleViewAdapter = new HomeRecycleViewAdapter(getActivity(), Collections.emptyList());
fragmentHomeBinding.homeDataZoneRecyclerView.setAdapter(homeRecycleViewAdapter);
LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
fragmentHomeBinding.homeDataZoneRecyclerView.setLayoutManager(layoutManager);
return rootLayout;
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
Log.d("Home", "onViewCreated");
super.onViewCreated(view, savedInstanceState);
}
@Override
public void onDestroy() {
super.onDestroy();
fragmentHomeBinding = null;
}
private void refreshDataListByDate(String date) {
DateTime dateTime = DateUtil.parseDate(date);
Flowable<List<CheckRecord>> flowable = DBManager.INSTANCE.checkRecordDao().queryByDate(dateTime.getTime());
flowable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
.subscribe(new FlowableSubscriber<List<CheckRecord>>() {
@Override
public void onSubscribe(Subscription s) {
// 3s超时
s.request(1);
}
@Override
public void onNext(List<CheckRecord> checkRecords) {
Log.d("onNext", "查询到 " + date + " 数据 " + checkRecords.size());
RecyclerView recyclerView = fragmentHomeBinding.homeDataZoneRecyclerView;
int childCount = recyclerView.getChildCount();
if (childCount > 0) {
recyclerView.removeAllViews();
}
homeRecycleViewAdapter.resetRecordList(checkRecords);
}
@Override
public void onError(Throwable t) {
Toasts.shortShow(getActivity(), "根据时间拉取历史数据失败: ", t.getLocalizedMessage());
}
@Override
public void onComplete() {
}
});
}
public void add2Top(CheckTypeEnum checkType, String name) {
CheckRecord record = new CheckRecord();
record.setId(System.currentTimeMillis());
record.setName(name);
record.setCheckDate(homeViewModel.getSelectDate().getValue().getTime());
record.setCheckType(checkType);
record.setDeleted(0);
record.setCreateDate(System.currentTimeMillis());
homeRecycleViewAdapter.add2Top(record);
}
}

49
app/src/main/java/cc/niushuai/didicheck/ui/main/home/HomeRecycleViewAdapter.java

@ -1,6 +1,7 @@ @@ -1,6 +1,7 @@
package cc.niushuai.didicheck.ui.main.home;
import android.content.Context;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
@ -8,11 +9,20 @@ import androidx.annotation.NonNull; @@ -8,11 +9,20 @@ import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import cc.niushuai.didicheck.R;
import cc.niushuai.didicheck.biz.entity.CheckRecord;
import cc.niushuai.didicheck.biz.room.DBManager;
import cc.niushuai.didicheck.util.Toasts;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import io.reactivex.Completable;
import io.reactivex.CompletableObserver;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
public class HomeRecycleViewAdapter extends RecyclerView.Adapter<HomeRecycleViewHolder> {
@ -21,6 +31,7 @@ public class HomeRecycleViewAdapter extends RecyclerView.Adapter<HomeRecycleView @@ -21,6 +31,7 @@ public class HomeRecycleViewAdapter extends RecyclerView.Adapter<HomeRecycleView
public HomeRecycleViewAdapter(Context context, List<CheckRecord> checkRecordList) {
this.context = context;
this.checkRecordList.clear();
this.checkRecordList.addAll(checkRecordList);
}
@ -35,11 +46,47 @@ public class HomeRecycleViewAdapter extends RecyclerView.Adapter<HomeRecycleView @@ -35,11 +46,47 @@ public class HomeRecycleViewAdapter extends RecyclerView.Adapter<HomeRecycleView
public void onBindViewHolder(@NonNull HomeRecycleViewHolder holder, int position) {
CheckRecord checkRecord = checkRecordList.get(position);
holder.titleTextView.setText(checkRecord.getName());
holder.contentTextView.setText(DateUtil.formatDate(checkRecord.getCreateDate()));
holder.contentTextView.setText(DateUtil.formatDateTime(new Date(checkRecord.getCreateDate())));
}
@Override
public int getItemCount() {
return checkRecordList.size();
}
public void add2Top(CheckRecord checkRecord) {
Completable completable = DBManager.INSTANCE.checkRecordDao().insertAll(checkRecord);
completable.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new CompletableObserver() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onComplete() {
Toasts.shortShow(context, DateUtil.date(checkRecord.getCheckDate()).toDateStr() + checkRecord.getName() + "打卡完成");
Log.i("project", "游泳打卡成功");
}
@Override
public void onError(Throwable e) {
Toasts.shortShow(context, DateUtil.date(checkRecord.getCheckDate()).toDateStr() + checkRecord.getName() + "打卡失败: " + e.getLocalizedMessage());
Log.e("project", "游泳打卡失败", e);
}
});
this.checkRecordList.add(0, checkRecord);
// notifyItemRangeInserted(0, checkRecordList.size());
notifyDataSetChanged();
}
public void resetRecordList(List<CheckRecord> checkRecords) {
// 全部更新数据
this.checkRecordList.clear();
if (CollUtil.isNotEmpty(checkRecords)) {
this.checkRecordList.addAll(checkRecords);
}
notifyDataSetChanged();
}
}

BIN
app/src/main/res/mipmap-hdpi/ic_app.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
app/src/main/res/mipmap-mdpi/ic_app.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
app/src/main/res/mipmap-xhdpi/ic_app.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

BIN
app/src/main/res/mipmap-xxhdpi/ic_app.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

BIN
app/src/main/res/mipmap-xxxhdpi/ic_app.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
icon/checkin.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Loading…
Cancel
Save