美文网首页
setEnableLoadMore(false)不起作用

setEnableLoadMore(false)不起作用

作者: jiluyixia | 来源:发表于2021-11-08 18:00 被阅读0次

    在用BaseQuickAdapter做分页的时候,设置了setEnableLoadMore(false),上拉的时候setOnLoadMoreListener里面还是执行了。

    //检测有没有下一页
    private void checkNoMoreData(int total) {
            couponsItemAdapter.loadMoreComplete();
            if (mCurPageNum * pageSize >= total) {
                couponsItemAdapter.setEnableLoadMore(false);
            } else {
                couponsItemAdapter.setEnableLoadMore(true);
            }
        }
    

    在setOnLoadMoreListener里面打印了一下adapter.isLoadMoreEnable(),发现这个值是true。
    也就是说,在setEnableLoadMore(false)完后,还有地方把这个值又设置成true了。
    代码里没有找到这个地方,只能去BaseQuickAdapter.java源码里找了

    public boolean isLoadMoreEnable() {
            return this.mLoadMoreEnable;
     }
    

    这个值是mLoadMoreEnable,查找一下这个值在什么情况下会被设置成true。
    有两个地方:

    public void setNewData(@Nullable List<T> data) {
           、、、、
                this.mLoadMoreEnable = true;
           、、、
    }
    
    private void openLoadMore(BaseQuickAdapter.RequestLoadMoreListener requestLoadMoreListener) {
            、、、
            this.mLoadMoreEnable = true;
            、、、
    }
    

    第一个地方,是在adapter赋值的时候,adapter.setNewData(list)
    第二个地方,是在

    public void setOnLoadMoreListener(BaseQuickAdapter.RequestLoadMoreListener requestLoadMoreListener) {
            this.openLoadMore(requestLoadMoreListener);
    }
    

    也就是设置上拉监听的时候,会把这个值改为true。

    看来一下自己的代码,果然在执行checkNoMoreData()检测有没有下一页的后面,还执行了setOnLoadMoreListener和setNewData。
    把checkNoMoreData代码移到这两个后面去执行,就OK了。

    相关文章

      网友评论

          本文标题:setEnableLoadMore(false)不起作用

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