From 56c2c0b8ec02e17f09b5726ee2642e9c9d7b6849 Mon Sep 17 00:00:00 2001 From: niushuai233 Date: Tue, 5 Dec 2023 23:21:59 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20:fire:=20=E6=89=80=E6=9C=89=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=B1=95=E7=A4=BA=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../didicheck/biz/dao/CheckRecordDao.java | 6 +- .../didicheck/ui/main/TabsPagerAdapter.java | 2 +- .../ui/main/records/DataListFragment.java | 120 ++++++++++++++++++ .../main/res/layout/fragment_data_list.xml | 19 +++ 4 files changed, 143 insertions(+), 4 deletions(-) create mode 100644 app/src/main/res/layout/fragment_data_list.xml diff --git a/app/src/main/java/cc/niushuai/didicheck/biz/dao/CheckRecordDao.java b/app/src/main/java/cc/niushuai/didicheck/biz/dao/CheckRecordDao.java index 8611613..5b455e0 100644 --- a/app/src/main/java/cc/niushuai/didicheck/biz/dao/CheckRecordDao.java +++ b/app/src/main/java/cc/niushuai/didicheck/biz/dao/CheckRecordDao.java @@ -14,14 +14,14 @@ import io.reactivex.Flowable; @Dao public interface CheckRecordDao { - @Query("SELECT * FROM t_check_record") + @Query("SELECT * FROM t_check_record order by check_date desc") Flowable> listAll(); - @Query("select * from t_check_record where deleted = 0 and check_date = :date") + @Query("select * from t_check_record where deleted = 0 and check_date = :date order by check_date desc") Flowable> queryByDate(long date); - @Query("select * from t_check_record where deleted = 0 and create_date >= :startDate and create_date <= :endDate ") + @Query("select * from t_check_record where deleted = 0 and create_date >= :startDate and create_date <= :endDate order by check_date desc") Flowable> queryByDate(long startDate, long endDate); diff --git a/app/src/main/java/cc/niushuai/didicheck/ui/main/TabsPagerAdapter.java b/app/src/main/java/cc/niushuai/didicheck/ui/main/TabsPagerAdapter.java index 3e1b705..e8a2d3b 100644 --- a/app/src/main/java/cc/niushuai/didicheck/ui/main/TabsPagerAdapter.java +++ b/app/src/main/java/cc/niushuai/didicheck/ui/main/TabsPagerAdapter.java @@ -52,7 +52,7 @@ public class TabsPagerAdapter extends FragmentPagerAdapter { @Override public int getCount() { - return 3; + return 2; } public HomeFragment getHomeFragment() { diff --git a/app/src/main/java/cc/niushuai/didicheck/ui/main/records/DataListFragment.java b/app/src/main/java/cc/niushuai/didicheck/ui/main/records/DataListFragment.java index ccad604..7b3c187 100644 --- a/app/src/main/java/cc/niushuai/didicheck/ui/main/records/DataListFragment.java +++ b/app/src/main/java/cc/niushuai/didicheck/ui/main/records/DataListFragment.java @@ -1,6 +1,126 @@ package cc.niushuai.didicheck.ui.main.records; +import android.content.Context; +import android.os.Bundle; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.constraintlayout.widget.ConstraintLayout; import androidx.fragment.app.Fragment; +import androidx.recyclerview.widget.DefaultItemAnimator; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import org.reactivestreams.Subscription; + +import java.util.Collections; +import java.util.List; + +import cc.niushuai.didicheck.biz.entity.CheckRecord; +import cc.niushuai.didicheck.biz.room.DBManager; +import cc.niushuai.didicheck.databinding.FragmentDataListBinding; +import cc.niushuai.didicheck.ui.main.home.HomeRecycleViewAdapter; +import cc.niushuai.didicheck.util.Toasts; +import io.reactivex.Flowable; +import io.reactivex.FlowableSubscriber; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.schedulers.Schedulers; public class DataListFragment extends Fragment { + + + private FragmentDataListBinding fragmentDataListBinding; + + private HomeRecycleViewAdapter dataListRecycleViewAdapter; + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + } + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + + Log.d("DataList", "onCreateView"); + fragmentDataListBinding = FragmentDataListBinding.inflate(inflater, container, false); + ConstraintLayout rootLayout = fragmentDataListBinding.getRoot(); + + initRecycleView(); + + // 默认查一次今天的数据 + refreshAllDate(); + + return rootLayout; + } + + @Override + public void onAttach(@NonNull Context context) { + super.onAttach(context); + Log.d("onAttach", "xxx"); + } + + @Override + public void onStart() { + super.onStart(); + Log.d("onStart", "xxx"); + refreshAllDate(); + } + + private void refreshAllDate() { + Flowable> flowable = DBManager.INSTANCE.checkRecordDao().listAll(); + flowable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) + .subscribe(new FlowableSubscriber>() { + @Override + public void onSubscribe(Subscription s) { + // 3s超时 + s.request(1); + } + + @Override + public void onNext(List checkRecords) { + Log.d("DataListOnNext", "查询到数据 " + checkRecords.size()); + RecyclerView recyclerView = fragmentDataListBinding.dataListRecyclerView; + int childCount = recyclerView.getChildCount(); + if (childCount > 0) { + recyclerView.removeAllViews(); + } + dataListRecycleViewAdapter.resetRecordList(checkRecords); + } + + @Override + public void onError(Throwable t) { + Toasts.shortShow(getActivity(), "DataList根据时间拉取历史数据失败: ", t.getLocalizedMessage()); + } + + @Override + public void onComplete() { + } + }); + } + + private void initRecycleView() { + RecyclerView homeDataZoneRecyclerView = fragmentDataListBinding.dataListRecyclerView; + homeDataZoneRecyclerView.addItemDecoration(new DividerItemDecoration(this.getActivity(), DividerItemDecoration.VERTICAL)); + DefaultItemAnimator itemAnimator = new DefaultItemAnimator(); + itemAnimator.setAddDuration(1000); + itemAnimator.setRemoveDuration(1000); + homeDataZoneRecyclerView.setItemAnimator(itemAnimator); + + dataListRecycleViewAdapter = new HomeRecycleViewAdapter(getActivity(), Collections.emptyList()); + fragmentDataListBinding.dataListRecyclerView.setAdapter(dataListRecycleViewAdapter); + LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity()); + fragmentDataListBinding.dataListRecyclerView.setLayoutManager(layoutManager); + } + + @Override + public void onDestroy() { + super.onDestroy(); + fragmentDataListBinding = null; + } } diff --git a/app/src/main/res/layout/fragment_data_list.xml b/app/src/main/res/layout/fragment_data_list.xml new file mode 100644 index 0000000..abf91aa --- /dev/null +++ b/app/src/main/res/layout/fragment_data_list.xml @@ -0,0 +1,19 @@ + + + + + + + \ No newline at end of file