BaseRecyclerViewAdapterHelper icon indicating copy to clipboard operation
BaseRecyclerViewAdapterHelper copied to clipboard

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

Open qq764215676 opened this issue 3 years ago • 24 comments

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

qq764215676 avatar Jul 21 '20 09:07 qq764215676

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

itkun2013 avatar Jul 27 '20 06:07 itkun2013

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

qq764215676 avatar Jul 27 '20 06:07 qq764215676

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

itkun2013 avatar Jul 28 '20 03:07 itkun2013

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

itkun2013 avatar Jul 31 '20 13:07 itkun2013

同样,会多次触发

wuhanzhouguanjie avatar Aug 06 '20 02:08 wuhanzhouguanjie

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

用SmartRefreshLayout的setOnLoadMoreListener,不要用BaseQuickAdapter的setOnLoadMoreListener

qq764215676 avatar Aug 11 '20 03:08 qq764215676

遇到同样问题

callhh avatar Aug 11 '20 07:08 callhh

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

shaodongPan avatar Aug 14 '20 08:08 shaodongPan

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

shaodongPan avatar Aug 14 '20 08:08 shaodongPan

所以无解咯 ,哈哈哈

itkun2013 avatar Aug 25 '20 05:08 itkun2013

所以无解咯 ,哈哈哈

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

424385117 avatar Aug 26 '20 01:08 424385117

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

Dullyoung avatar Sep 03 '20 08:09 Dullyoung

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

dlisagod avatar Sep 18 '20 09:09 dlisagod

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

fengyongge avatar Sep 23 '20 09:09 fengyongge

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

itkun2013 avatar Sep 24 '20 09:09 itkun2013

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

qianshengta avatar Nov 16 '20 04:11 qianshengta

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

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

Dullyoung avatar Nov 16 '20 05:11 Dullyoung

不成熟的解决办法: 我是将isAutoLoadMore = false, 通过监听NestedScroll View的滑动来实现加载更多.

Jiangpinbo avatar Jun 21 '21 08:06 Jiangpinbo

和recycleview外面嵌套的布局没有关系。 测试发现 LRecyclerView.refreshComplete(pagesize) 设置必须在数据填充完mLRecyclerViewAdapter.notifyDataSetChanged()后,如果先设置refreshComplete则会无限加载

smiletolive avatar Aug 19 '21 10:08 smiletolive

在Adapter.notifyDataSetChanged() 后调用 Adapter.loadMoreComplete(),解决连续加载问题。

hezhipengzipp avatar Aug 20 '22 07:08 hezhipengzipp

这是来自QQ邮箱的假期自动回复邮件。   您好,我最近正在休假中,无法亲自回复您的邮件。我将在假期结束后,尽快给您回复。

424385117 avatar Aug 20 '22 07:08 424385117