setEnableLoadMore(false)不起作用

在用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 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)不起作用)