在用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了。
网友评论