这个库本身存在上拉加载更多的多次的弊端,真正的解决为引入https://github.com/scwang90/SmartRefreshLayout 完成加载逻辑,如果您不想引入,那只能如下解决了
上拉加载更多一直有坑没有解决,就是第一次加载数据会回调加载跟多方法,其次是上拉过程中加载跟多会被回调多次
其实,仔细研读官方的方案会发现,在设置完成适配器之后应当默认调用,
mAdapter.loadMoreEnd(true);
mAdapter.loadMoreComplete();
,亦或者是serviceSeachAdapter.loadMoreFail();
以此来最终完成整个加载动作
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vFnEkT83-1577341867522)(https://i.imgur.com/T8t6w3J.png)]
serviceSeachAdapter.bindToRecyclerView(rvSurrounnding);
serviceSeachAdapter.setOnLoadMoreListener(new BaseQuickAdapter.RequestLoadMoreListener() {
@Override
public void onLoadMoreRequested() {
currentPage += 1;
isLoadMore = true;
loadData();
}
},rvSurrounnding);
serviceSeachAdapter.disableLoadMoreIfNotFullPage();
serviceList = responsebody.getResult().getServiceList();
if (isLoadMore) {
isLoadMore = false;
serviceSeachAdapter.addData(serviceList);
} else {
serviceSeachAdapter.setNewData(serviceList);
}
if (serviceList.size() < PAGE_COUNT) {
serviceSeachAdapter.loadMoreEnd(true);
}else{
serviceSeachAdapter.loadMoreComplete();
}
serviceSeachAdapter.loadMoreFail()
mQuickAdapter.loadMoreComplete();
mQuickAdapter.loadMoreFail();
mQuickAdapter.loadMoreEnd();
mQuickAdapter.setEnableLoadMore(boolean);
// 当列表滑动到倒数第N个Item的时候(默认是1)回调onLoadMoreRequested方法
mQuickAdapter.setPreLoadNumber(int);
mQuickAdapter.setLoadMoreView(new CustomLoadMoreView());
public final class CustomLoadMoreView extends LoadMoreView {
@Override
public int getLayoutId() {
return R.layout.view_load_more;
}
/**
* 如果返回true,数据全部加载完毕后会隐藏加载更多
* 如果返回false,数据全部加载完毕后会显示getLoadEndViewId()布局
*/
@Override
public boolean isLoadEndGone() {
return true;
}
@Override
protected int getLoadingViewId() {
return R.id.load_more_loading_view;
}
@Override
protected int getLoadFailViewId() {
return R.id.load_more_load_fail_view;
}
/**
* isLoadEndGone()为true,可以返回0
* isLoadEndGone()为false,不能返回0
*/
@Override
protected int getLoadEndViewId() {
return 0;
}
}
查看代码发现,BaseQuickAdapter 通过 bindToRecyclerView() 方法,绑定RecyclerView ———> 获取到layoutmanager———>监听条目填充变化——>判断是最后一个条目——>开启监听,(判断是不是loadmore状态和enableLoadMore,是通过
mAdapter.loadMoreEnd(true);
mAdapter.loadMoreComplete();
,serviceSeachAdapter.loadMoreFail();
三个方法结束loadmore状态的)产生回调
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KMn8hbLP-1577341867523)(https://i.imgur.com/iSylRVx.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IAPuIhBF-1577341867523)(https://i.imgur.com/rJBJVQ2.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EfhimeZo-1577341867523)(https://i.imgur.com/0US8oEt.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mI7VT1D7-1577341867523)(https://i.imgur.com/WWoSnfH.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4YEVxabB-1577341867523)(https://i.imgur.com/VLykCGr.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JzhnSQ8C-1577341867524)(https://i.imgur.com/jAjW1Nu.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r0n879QC-1577341867524)(https://i.imgur.com/uy8utBN.png)]
参考: https://www.jianshu.com/p/1e20f301272e