Baserecyclerviewadapterhelper: 加载更多,loadMoreComplete调用后会继续回调onLoadMore,导致连续加载

Created on 21 Jul 2020  ·  17Comments  ·  Source: CymChad/BaseRecyclerViewAdapterHelper

onLoadMore中又继续调用loadMoreComplete,导致数据一次就连续加载完了
正常应该滑到底部后再回调onLoadMore,但我还没滑动,onLoadMore就被回调了

Most helpful comment

和recycleview外面嵌套的布局应该没有关系。
产生的原因:首先,当使用者调用loadMoreComplete时,adapter就会自动调用onLoadMore方法,因为就是要实现自动加载功能,但是处理不当就会陷入循环中。
解决方案2种如下:
1:在onLoadMore回调中,加判断条件终止循环,例如分页逻辑;
2:在loadMoreComplete后面加调用loadMoreEnd,告诉程序加载完成,也会终止循环
希望有用!

All 17 comments

我也遇到這個問題了,首次進來就調用了

是NestedScrollView的原因,我换用SmartRefreshLayout了,把NestedScrollView放到SmartRefreshLayout里面,就没这个问题了,BRVAH的加载更多放弃了

我是把SmartRefreshLayout-CoordinatorLayout-NestedScrollView,做了沉浸式,还是会首次调用
/** * adapter的上拉加载 */ if (homeMessageAdapter.getLoadMoreModule() != null) { homeMessageAdapter.getLoadMoreModule().setOnLoadMoreListener(() -> { //TODO:上拉加载数据 LogUtils.d("homeMessageAdapter 上拉加载、、、、"); }); }
往上拉就不走加载更多的数据了,

发现进入 loadmore循环了,一直加载数据,请问有解决了么,

同样,会多次触发

我是把SmartRefreshLayout-CoordinatorLayout-NestedScrollView,做了沉浸式,还是会首次调用
/** * adapter的上拉加载 */ if (homeMessageAdapter.getLoadMoreModule() != null) { homeMessageAdapter.getLoadMoreModule().setOnLoadMoreListener(() -> { //TODO:上拉加载数据 LogUtils.d("homeMessageAdapter 上拉加载、、、、"); }); }
往上拉就不走加载更多的数据了,

用SmartRefreshLayout的setOnLoadMoreListener,不要用BaseQuickAdapter的setOnLoadMoreListener

遇到同样问题

应该是NestedScrollView 的onMeasure方法会测量出recyclerView已有item的高度和,onBindViewHolder会从第一个item调用到最后一个item,在baseQuickAdapter 的onBindViewHolder中会判断是否要加载更多,因为最后一个item是已经被加载了,所以LoadMoreListener直接调用,然后就是循环套娃。

NestedScrollView 虽然会解决recyclerView高度显示问题 但是会导致item的复用失效。

所以无解咯 ,哈哈哈

所以无解咯 ,哈哈哈

看看根布局是否在约束布局中,如果是把他换成其他布局

同样遇到 recyclerview外面只要套一层NSV 就会不停地触发adapter的加载更多,解决方法是删了nsv

我现在也遇到了,不过没有套在nsv里,也没有约束布局,还是出现自动循环loadmore,以前用了这么多次就没遇到过,郁闷死了

和recycleview外面嵌套的布局应该没有关系。
产生的原因:首先,当使用者调用loadMoreComplete时,adapter就会自动调用onLoadMore方法,因为就是要实现自动加载功能,但是处理不当就会陷入循环中。
解决方案2种如下:
1:在onLoadMore回调中,加判断条件终止循环,例如分页逻辑;
2:在loadMoreComplete后面加调用loadMoreEnd,告诉程序加载完成,也会终止循环
希望有用!

我换了另外一种方式,如果布局有多个子view,需要整体滑动,我是通过addHeaderView(view,0);addHeaderView(view,1);用一个recylerview添加多少headview,上拉加载没有在出现自动循环的问题了,这样避免 NestedScrollView +Recylerview多层嵌套,直接Recylerview滑动

我也是一样, 我是SmartRefreshLayout+RecyclerView 就一直无限调用架子啊更多 有解决方法了@我一下

我也是一样, 我是SmartRefreshLayout+RecyclerView 就一直无限调用架子啊更多 有解决方法了@我一下

你这个应该没问题的啊 我现在就这么用的 应该是你调用的方式不对 或者布局有问题。 SRL+RV没问题的。 有问题的是NScrollView+RV

Was this page helpful?
0 / 5 - 0 ratings