左晓为主开发手持机充值管理机
zuoxiao
2024-09-27 feb7add1979c830e0d940286242a7c489f2f8f96
qihealonelibrary/src/main/java/com/dayu/qihealonelibrary/activity/NewCardListActivityQHAlone.java
New file
@@ -0,0 +1,188 @@
package com.dayu.qihealonelibrary.activity;
import static com.dayu.baselibrary.view.TitleBar.ClickType_RIGHT_TEXT;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.dayu.baselibrary.utils.TipUtil;
import com.dayu.baselibrary.view.datepicker.CustomDatePicker;
import com.dayu.baselibrary.view.datepicker.DateFormatUtils;
import com.dayu.qihealonelibrary.adapter.NewCardAdapter;
import com.dayu.qihealonelibrary.databinding.ActivityNewcardListQhaBinding;
import com.dayu.qihealonelibrary.dbBean.UserCardBean;
import com.scwang.smart.refresh.footer.ClassicsFooter;
import com.scwang.smart.refresh.layout.api.RefreshLayout;
import com.scwang.smart.refresh.layout.listener.OnLoadMoreListener;
import java.util.ArrayList;
import java.util.List;
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
import io.reactivex.rxjava3.core.Observable;
import io.reactivex.rxjava3.schedulers.Schedulers;
/**
 * Copyright (C), 2023,
 * Author: zuo
 * Date: 2023-11-10 19:52
 * Description: 新卡注册列表界面
 */
public class NewCardListActivityQHAlone extends QHAloneBaseActivity {
    ActivityNewcardListQhaBinding newcardListBinding;
    List<UserCardBean> userCardBeanList = new ArrayList<>();
    NewCardAdapter adapter;
    private CustomDatePicker beginDatePicker;
    private CustomDatePicker endDatePicker;
    long beginTime;
    long endTime;
    int page = 0;
    //每页数据条数
    int limit = 30;
    RefreshLayout myRefreshLayout;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        newcardListBinding = ActivityNewcardListQhaBinding.inflate(LayoutInflater.from(this));
        setContentView(newcardListBinding.getRoot());
        setRightButton();
        initDatePicker();
        initList();
        getList();
    }
    private void initList() {
        myRefreshLayout = (RefreshLayout) newcardListBinding.refreshLayout;
        myRefreshLayout.setEnableRefresh(false);
        myRefreshLayout.setRefreshFooter(new ClassicsFooter(this));
        myRefreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
            @Override
            public void onLoadMore(RefreshLayout refreshlayout) {
                page = page + 1;
                getList();
            }
        });
        adapter = new NewCardAdapter(this, userCardBeanList);
        LinearLayoutManager layoutManager = new LinearLayoutManager(this);
        newcardListBinding.recyclerView.setLayoutManager(layoutManager);
        newcardListBinding.recyclerView.setAdapter(adapter);
        int totale = baseDao.userCardDao().getUserTotale();
        newcardListBinding.userTotal.setText("开户数:" + totale + "");
    }
    private void getList() {
        // 创建一个 Observable
        Observable<List<UserCardBean>> observable = Observable.create(emitter -> {
            // 在这里执行异步操作
            List<UserCardBean> beanList;
            if (beginTime == 0 && endTime == 0) {
                beanList = asynchBaseDao.userCardDao().findAll(page * limit, limit);
            } else {
                beanList = asynchBaseDao.userCardDao().findByTime(beginTime, endTime);
            }
            // 将结果发送给观察者
            emitter.onNext(beanList);
            emitter.onComplete();
        });
        // 订阅观察者
        observable.subscribeOn(Schedulers.io()) // 指定在 IO 线程执行
                .observeOn(AndroidSchedulers.mainThread()) // 指定在单一线程观察结果
                .subscribe(
                        result -> {
                            // 在这里处理结果,这里是在主线程中
//                            System.out.println("Result: " + result);
                            if (result.size() < limit) {
                                myRefreshLayout.finishLoadMoreWithNoMoreData();
                            }
                            if (result != null && result.size() > 0) {
                                userCardBeanList.addAll(result);
                            }
                            adapter.notifyDataSetChanged();
                        },
                        error -> {
                            // 处理错误
                            System.err.println("Error: " + error.getMessage());
                        }
                );
    }
    private void setRightButton() {
        titleBar.setOnItemclickListner(ClickType_RIGHT_TEXT, new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                beginDatePicker.show(System.currentTimeMillis());
            }
        });
    }
    private void initDatePicker() {
        long beginTimestamp = DateFormatUtils.str2Long("2009-05-01", false);
        final long endTimestamp = System.currentTimeMillis();
        // 通过时间戳初始化日期,毫秒级别
        beginDatePicker = new CustomDatePicker(this, "选择开始时间", new CustomDatePicker.Callback() {
            @Override
            public void onTimeSelected(long timestamp) {
                beginTime = timestamp;
                endDatePicker.show(timestamp);
            }
        }, beginTimestamp, endTimestamp);
        // 不允许点击屏幕或物理返回键关闭
        beginDatePicker.setCancelable(false);
        // 不显示时和分
        beginDatePicker.setCanShowPreciseTime(false);
        // 不允许循环滚动
        beginDatePicker.setScrollLoop(false);
        // 不允许滚动动画
        beginDatePicker.setCanShowAnim(false);
        endDatePicker = new CustomDatePicker(this, "选择结束时间", new CustomDatePicker.Callback() {
            @Override
            public void onTimeSelected(long timestamp) {
                endTime = timestamp;
                if ((endTime < beginTime) && endTime != beginTime) {
                    TipUtil.show(NewCardListActivityQHAlone.this, "结束时间不能晚于开始时间");
                } else {
//                    try {
//                        endTime = endTime + (1000 * 60 * 60 * 24) - 1;
//                        List<UserCardBean> userList = baseDao.userCardDao().findByTime(beginTime, endTime);
//                        userCardBeanList.clear();
//                        userCardBeanList.addAll(userList);
//                        adapter.notifyDataSetChanged();
//                    } catch (Exception e) {
//                        e.printStackTrace();
//                    }
                    endTime = endTime + (1000 * 60 * 60 * 24) - 1;
                    userCardBeanList.clear();
                    getList();
                }
            }
        }, beginTimestamp, endTimestamp);
        // 不允许点击屏幕或物理返回键关闭
        endDatePicker.setCancelable(false);
        // 不显示时和分
        endDatePicker.setCanShowPreciseTime(false);
        // 不允许循环滚动
        endDatePicker.setScrollLoop(false);
        // 不允许滚动动画
        endDatePicker.setCanShowAnim(false);
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        endDatePicker.onDestroy();
        beginDatePicker.onDestroy();
    }
}