BRVAH官方使用指南之 增加上拉加载更多和 下拉刷新功能

RecylerView结合  BRAVH 以及googl原生的 SwipeRefreshLayout 实现RecylerView的 上拉加载更多和下拉刷新功能

https://blog.csdn.net/JerryWu145/article/details/52225898

  1. 下拉刷新是通过实现 SwipeRefreshLayout.OnRefreshListener 接口来实现的,也就是说下拉刷新具有了通用性,不只是 RecyclerView ;
  2. 加载更多要通过 LinearLayoutManager 来获取 RecyclerView 是否滑动到底部来实现。

1 :上拉加载更多

 1-1  Adapter实现接口  :  RecylerViewAdapter extends BaseQuickAdapter implements UpFetchModule,LoadMoreModule

  1-2 设置loadMoreData 监听: 

adapterdemo.getLoadMoreModule().setOnLoadMoreListener(new OnLoadMoreListener() {
            @Override
            public void onLoadMore() {
                Log.e(TAG," adapterdemo onLoadMore enter");
                configLevelTypeList(DATA_SOURCE);
            }
        });

 1-3  触发onLoadMore函数的回调

private void configLoadMoreData() {
        dataList = data.getDataList();
        Log.e(TAG,"onCreate data = " + dataList);
        if (dataList == null || dataList.size() ==0) {
            showRecylerView(false);
            return;
        }
        // 下面代码是模拟环境代码(模拟app需要分页向服务器三次下载数据)
        if (count == 3) {
            // 模拟3次 分页加载
            Log.e(TAG,"success count = " + count + "---服务器数据很多需要经过3次下载完毕");
            adapterdemo.getLoadMoreModule().loadMoreEnd();
            return;
        }
        if (dataList.size() < 3) {
            // 每次请求到3个,就认为是本次加载结束,需要发起下一次请求
            Log.e(TAG,"success count = " + count + "---服务器数据不够一次下载完毕");
            adapterdemo.getLoadMoreModule().loadMoreEnd();
            count++;
        } else {
            Log.e(TAG,"success count = " + count + "---数据没下载完毕需要继续向服务器下载");
            // 注意不是加载结束,而是本次数据加载结束并且还有下页数据
            adapterdemo.getLoadMoreModule().loadMoreComplete();
            count++;
        }
        adapterdemo.addData(dataList);
    }

2 : 使用 Google原生的 SwipeRefreshLayout 实现下拉刷新功能

private void configSwipRefreshData(){
        swipRefresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {
                Log.e(TAG,"configSwipRefreshData onRefresh enter");
                configLevelTypeList(REFRESH_DATA_SOURCE);
            }
        });
    }
private void configAdapter(boolean isSuccessGet,boolean isSwipRefresh) {
        showRecylerView(isSuccessGet);
//        adapterDemo.getLoadMoreModule().setLoadMoreView(new CustomLoadMoreView());
//        adapterDemo.getLoadMoreModule().loadMoreToLoading();
        Log.e(TAG," configAdapter isSwipRefresh = " + isSwipRefresh);
        if (isSwipRefresh) {
            dataList = data.getDataList();
            // TODO 事实上时不能清空数据的,但是不清空,新数据又不能刷新
            adapterdemo.getData().clear();
            adapterdemo.addData(dataList);
            // 收起正在刷新的加载动画
            swipRefresh.setRefreshing(false);
        } else {
            configLoadMoreData();
        }
    }

 

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页