[CymChad/BaseRecyclerViewAdapterHelper]分页加载,首页数据不满一屏或者首页数据量少导致LoadMoreView显示不友好的处理方法

2024-08-08 543 views
9
这个就是个人的理解总结一下使用方法,希望后者遇到可以参考

分页加载在android里面是最常用的了, 不过在目前框架中好像没有处理当数据量少,或者数据不足一页时,如果调用了setOnLoadMoreListener();会导致LoadMoreView不能有好的显示的情况,虽然框架提供了setEnableLoadMore()来控制LoadMoreView是否显示,

场景一:使用PageIndex 来做分页加载,PageSize来做每页数据容量,界面可以下拉刷新 or 加载更多

在此场景中:首页的请求参数为 pageIndex = 1; pageSize= 10;

 private MyAdapter mAdapter;

 private void initAdapter() {
          mAdapter = new MyAdapter();
          mAdapter.setLoadMoreView(new CustomLoadMoreView());
}

// 处理加载的数据
private void handleResponse(List<Bean> data) {
        // 各种数据刷新逻辑

       setLoadMore(data);
    }

 private void setLoadMore(List<Bean> data) {
// 当此次数据处理为加载首页数据,并且数据不小于pageSize,说明还有下一页数据,可以设置加载更多监听
        if (pageIndex == 1 && data == pageSize) { 
            mAdapter .setOnLoadMoreListener(new BaseQuickAdapter.RequestLoadMoreListener() {
                @Override
                public void onLoadMoreRequested() {
                    //加载更多数据逻辑
                    pageIndex ++;
                }
            }, RecyclerView);
        }
    }
当然这个只是其中一种,这样的设置模式可以解决目前的不友好显示方式 1383 560 781

回答

5

如果有更好的处理方法,麻烦告知!

5

这是一种方法,之前设计的思想是 下拉刷新和加载更多 后都要去设置下加载更多的状态,是否是还有更多数据,因为框架不知道不满一屏幕到底需要不需要加载,也不知道什么时候去停止加载

6

每个人的业务需求都不是完全一样,现在的方法对单个界面比较有限,如果你要快速切换列表,那是有点问题,可以用其他形式的,比如套在外面,自己进行判断

2

@tysheng 嗯,目前我这边的需求逻辑是没问题的,如果是多个fragment,没差别吧,各自管理各自的adapter就好了

1

@guominfang 有差别,代码逻辑注释我都有写着,应该是非常清楚的。具体原因是快速切换会导致判断 item 位置出错

4

感觉处理不太好,第一次下拉满足判断去设置监听后,假如再次下拉数据不满足pageSize数据还是会出现。

8

@tysheng 好吧,我这边暂时没遇到你说的情况, 如果是你那种情况,你套在外面是怎么处理?

9

@Roc-egg 可以怎么说,因为目前框架没有remove OnLoadMoreListener的方法,如果是你那个逻辑: 每次下拉刷新前

mAdapter .setOnLoadMoreListener(null, RecyclerView);

这样很傻啊。