BaseRecyclerViewAdapterHelper icon indicating copy to clipboard operation
BaseRecyclerViewAdapterHelper copied to clipboard

NestedScrollView嵌套LinearLayout嵌套RecyclerView,无限触动onLoadMore,请问怎么解决,谢谢

Open androidHRTZ opened this issue 3 years ago • 10 comments

image

androidHRTZ avatar Jan 03 '22 10:01 androidHRTZ

+1,我也遇到了

Hynsn avatar Jan 05 '22 14:01 Hynsn

+1

worldskx avatar Jan 07 '22 01:01 worldskx

+1

jootcode avatar Jan 10 '22 02:01 jootcode

确实会这样,我前两天也因为这个吃了苦头,NestedScrollView嵌套RecyclerView直接使recycleView的布局缓存失效了,没办法,不能这么写,可以按照BRVAH的建议,使用CoordinatorLayout嵌套,或者干脆就不要嵌套😂

SaltedFish-Extreme avatar Jan 21 '22 09:01 SaltedFish-Extreme

原因:

--> NestedScrollView测量子View时使用的测量模式为MeasureSpec.UNSPECIFIED --> 子view大小不受限制,即Recycler View的高度就是加载了全部item的大小 (导致一开始就创建了全部的item) --> 当前的数据都创建展示了,触发onLoadMore事件-->加载完后又全部item创建并开始促发下次onLoadMore事件,直到没有更多数据为止。

*(可以在AS的Layout Inspector中看到所有的item都创建并添加到界面中)

直接的处理方式:

既然是RecyclerView的高度无限大导致了复用机制失效;那么我们就给RecyclerView指定一个高度就好(设置LayoutParams、或者通过继承并重写NestedScrollView/RecyclerView等相关View的测量方法,让RecyclerView的高度不为不受限的高(即不让RecyclerView的复用机制失效)。。。)

linzhijie2014 avatar Mar 28 '22 17:03 linzhijie2014

@androidHRTZ 建议你使用Adapter.addHeaderView 或 addFooterView, 将相关布局添加头脚上 去除NestedScrollView 应该可以解决相关问题

greadking avatar Sep 07 '22 02:09 greadking

添加header footer很麻烦的 写起来 TT

androidHRTZ avatar Sep 07 '22 02:09 androidHRTZ

嗯嗯 能解决问题就还好 要不概要花功夫改源码 或是自定义测量高度 更麻烦的

greadking avatar Sep 07 '22 03:09 greadking

+1

UserName-Haha avatar Jan 06 '23 02:01 UserName-Haha

把除re以外的组件全部添加到re的头部

---原始邮件--- 发件人: @.> 发送时间: 2023年1月6日(周五) 上午10:24 收件人: @.>; 抄送: @.@.>; 主题: Re: [CymChad/BaseRecyclerViewAdapterHelper] NestedScrollView嵌套LinearLayout嵌套RecyclerView,无限触动onLoadMore,请问怎么解决,谢谢 (Issue #3580)

+1

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

jootcode avatar Jan 06 '23 04:01 jootcode