美文网首页
BaseQuickAdapter上拉加载下拉刷新2

BaseQuickAdapter上拉加载下拉刷新2

作者: jiluyixia | 来源:发表于2020-09-25 17:17 被阅读0次

上一中方法,条件太多,比较复杂,现在再写一种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());
        }
    }

}

相关文章

网友评论

      本文标题:BaseQuickAdapter上拉加载下拉刷新2

      本文链接:https://www.haomeiwen.com/subject/xtifuktx.html