上一中方法,条件太多,比较复杂,现在再写一种implements OnRefreshListener, OnLoadMoreListener的方法。
首先,类必须实现OnRefreshListener, OnLoadMoreListener。
public class AListFragment implements OnRefreshListener, OnLoadMoreListener
重写两种方法:onLoadMore(加载更多),onRefresh(刷新)
在获取到数据的时候,
if (RechargeListBean == null || RechargeListBean.size() == 0) {//没有获取到数据
return;
}
if (RechargeListBean.size() < PAGE_SIZE) {//获取的数据小于一页
// 禁止上拉
mRefreshLy.setEnableLoadMore(false);
} else {
//大于等于1页,可以上拉
mRefreshLy.setEnableLoadMore(true);
}
//mLoaderMore为false时,没有下拉,此时数据messageDatas可以清空再在下面addAll。
//为true时,说明有下拉数据,不用清空,在下面addAll的是下一页(++page)的数据。
if (!mLoaderMore) {
messageDatas.clear();
}
stopRefresh(false);
stopLoadMore();
messageDatas.addAll(RechargeListBean);
mRechargeListItemAdapter.setNewData(messageDatas);
具体代码:
public class AListFragment extends BaseFragment implements View.OnClickListener, OnRefreshListener, OnLoadMoreListener {
static final int PAGE_SIZE = 15;
int page = 1;
// 刷新
private boolean mRefreshing = false;
// 加载更多
private boolean mLoaderMore = false;
// 显示的数据集合
private ArrayList<RechargeListBean> messageDatas = new ArrayList<>();
private RefreshHeader mRefreshHeader;
RechargeListItemAdapter mRechargeListItemAdapter;
@BindView(R.id.ly_pull_refresh)
SmartRefreshLayout mRefreshLy;
@BindView(R.id.recharge_list)
RecyclerView mRechargeListRV;
@BindView(R.id.iv_goback)
ImageView iv_goback;
@Override
public void onLazyInitView(@Nullable Bundle savedInstanceState) {
super.onLazyInitView(savedInstanceState);
ImmersionBar.with(this).titleBar(R.id.ly_title_bar).autoDarkModeEnable(true).statusBarColor(R.color.color_white).init();
iv_goback.setOnClickListener(this);
mRefreshHeader = getRefreshHeader();
mRefreshLy.setEnableRefresh(true);
mRefreshLy.setHeaderHeight(50);
mRefreshLy.setRefreshHeader(mRefreshHeader);
mRefreshLy.setEnableRefresh(true);
mRefreshLy.setOnRefreshListener(this);
mRefreshLy.setOnLoadMoreListener(this);
mRefreshLy.setEnableLoadMore(true);
mRefreshLy.setFooterHeight(50);
mRechargeListItemAdapter = new RechargeListItemAdapter(null);
mRechargeListItemAdapter.setEmptyView(new YJGEmptyView(getContext(), YJGEmptyView.TYPE_ORDER));
mRechargeListRV.setAdapter(mRechargeListItemAdapter);
Log.v("re22","0000===");
selectBill(page);
}
public void selectBill(int page){
showLoading();
RetrofitClient.getInstance().getApiService()
.getRechargeList(page,PAGE_SIZE)
.map(new ResultTransformFunction<>())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(RechargeListBean -> {
hideLoading();
if (RechargeListBean == null || RechargeListBean.size() == 0) {
return;
}
if (RechargeListBean.size() < PAGE_SIZE) {
// 禁止上拉
mRefreshLy.setEnableLoadMore(false);
} else {
mRefreshLy.setEnableLoadMore(true);
}
if (!mLoaderMore) {
messageDatas.clear();
}
stopRefresh(false);
stopLoadMore();
messageDatas.addAll(RechargeListBean);
mRechargeListItemAdapter.setNewData(messageDatas);
Log.v("aaa2","=="+RechargeListBean.size());
}, throwable -> {
hideLoading();
mRefreshLy.finishRefresh();
showToast(throwable.getMessage());
});
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.iv_goback:
pop();
break;
}
}
@Override
protected int getLayoutId() {
return R.layout.fragment_recharge_list;
}
//获取下拉刷新头部
protected
@NonNull
RefreshHeader getRefreshHeader() {
RefreshHeader refreshHeader;
if (com.yijiago.ecstore.widget.App.refreshHeaderClass != null) {
try {
refreshHeader = com.yijiago.ecstore.widget.App.refreshHeaderClass.getConstructor(Context.class).newInstance(getActivity());
} catch (Exception e) {
throw new IllegalStateException("refreshHeaderClass 无法通过context实例化");
}
} else {
refreshHeader = (DefaultRefreshHeader) LayoutInflater.from(getActivity()).inflate(R.layout
.refresh_control_header, null);
}
return refreshHeader;
}
public void stopRefresh(boolean closeImmediately) {
if (mRefreshLy != null && mRefreshing) {
mRefreshing = false;
mRefreshHeader.setShouldCloseImmediately(closeImmediately);
mRefreshLy.finishRefresh();
}
}
public void stopLoadMore() {
if (mRefreshLy != null && mLoaderMore) {
mLoaderMore = false;
mRefreshLy.finishLoadMore();
}
}
@Override
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
mLoaderMore = true;
mRefreshLy.autoLoadMore();
selectBill(++page);
}
@Override
public void onRefresh(@NonNull RefreshLayout refreshLayout) {
mRefreshLy.autoRefresh();
mRefreshHeader.setShouldCloseImmediately(false);
mRefreshing = true;
// 数据
page = 1;
selectBill(page);
}
public class RechargeListItemAdapter extends BaseQuickAdapter<RechargeListBean, BaseViewHolderExt> {
public RechargeListItemAdapter(@Nullable List<RechargeListBean> data) {
super(R.layout.fragment_recharge_list_item, data);
}
@Override
protected void convert(@NonNull BaseViewHolderExt helper, RechargeListBean item) {
helper.setText(R.id.status_str, item.getStatus_str())
.setText(R.id.money, item.getMoney())
.setText(R.id.op_name, item.getOp_name())
.setText(R.id.created_time, item.getCreated_time());
}
}
}








网友评论