package com.dayu.qiheonlinelibrary.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.ArithUtil;
|
import com.dayu.baselibrary.utils.TipUtil;
|
import com.dayu.baselibrary.view.datepicker.CustomDatePicker;
|
import com.dayu.baselibrary.view.datepicker.DateFormatUtils;
|
|
import com.dayu.qiheonlinelibrary.adapter.RechargeAdapter;
|
import com.dayu.qiheonlinelibrary.databinding.ActivityRechargeListQhlBinding;
|
import com.dayu.qiheonlinelibrary.dbBean.RechargeBean;
|
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-5 09:52
|
* Description: 充值记录
|
*/
|
public class RechargeListActivity extends BaseActivity {
|
|
ActivityRechargeListQhlBinding rechargeListBinding;
|
RechargeAdapter adapter;
|
List<RechargeBean> rechargeList = new ArrayList<>();
|
|
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);
|
rechargeListBinding = ActivityRechargeListQhlBinding.inflate(LayoutInflater.from(this));
|
setContentView(rechargeListBinding.getRoot());
|
setRightButton();
|
initDatePicker();
|
initList();
|
getList();
|
}
|
|
private void initList() {
|
myRefreshLayout = (RefreshLayout) rechargeListBinding.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 RechargeAdapter(this, rechargeList);
|
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
|
rechargeListBinding.recyclerView.setLayoutManager(layoutManager);
|
rechargeListBinding.recyclerView.setAdapter(adapter);
|
}
|
|
private void getTotal() {
|
if (rechargeList != null) {
|
double total = 0;
|
for (int i = 0; i < rechargeList.size(); i++) {
|
double b = Double.parseDouble(rechargeList.get(i).getMorny());
|
total = ArithUtil.add(total, b);
|
}
|
rechargeListBinding.rechargeTotal.setText("已加载数据累计充值:" + String.valueOf(total) + "元");
|
}
|
|
}
|
|
private void getList() {
|
// 创建一个 Observable
|
Observable<List<RechargeBean>> observable = Observable.create(emitter -> {
|
// 在这里执行异步操作
|
List<RechargeBean> beanList;
|
if (beginTime == 0 && endTime == 0) {
|
beanList = asynchBaseDao.rechargeDao().findAll(page * limit, limit);
|
} else {
|
beanList = asynchBaseDao.rechargeDao().ansyFindByTime(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) {
|
rechargeList.addAll(result);
|
}
|
adapter.notifyDataSetChanged();
|
getTotal();
|
},
|
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(RechargeListActivity.this, "结束时间不能晚于开始时间");
|
} else {
|
endTime = endTime + (1000 * 60 * 60 * 24) - 1;
|
rechargeList.clear();
|
getList();
|
}
|
}
|
}, beginTimestamp, endTimestamp);
|
// 不允许点击屏幕或物理返回键关闭
|
endDatePicker.setCancelable(false);
|
// 不显示时和分
|
endDatePicker.setCanShowPreciseTime(false);
|
// 不允许循环滚动
|
endDatePicker.setScrollLoop(false);
|
// 不允许滚动动画
|
endDatePicker.setCanShowAnim(false);
|
}
|
|
|
}
|