困扰自己3年的问题了。想咨询一下同学们。
以前用NestedScrollView嵌套RV,RV无法复用,数据量大必卡顿。后来也明白了卡顿的原因。2020年的时候,百度,CSDN上没有找到解决办法。也就搁浅在哪里了。
人菜瘾大技术差,这不又上瘾了,Fragment页里,想用一个RV里面嵌套4RV去实现。同样遇到无法复用的问题。
在大厂里都怎么去实现这类经典布局呢?
困扰自己3年的问题了。想咨询一下同学们。
以前用NestedScrollView嵌套RV,RV无法复用,数据量大必卡顿。后来也明白了卡顿的原因。2020年的时候,百度,CSDN上没有找到解决办法。也就搁浅在哪里了。
人菜瘾大技术差,这不又上瘾了,Fragment页里,想用一个RV里面嵌套4RV去实现。同样遇到无法复用的问题。
在大厂里都怎么去实现这类经典布局呢?
NestedScrollView嵌套RecyclerView,会导致RecyclerView的复用性降低,性能问题可能会出现卡顿。这是因为NestedScrollView和RecyclerView之间的滚动事件会有冲突,导致RecyclerView无法正确地进行重用。
在大厂里,常见的解决方案是使用另一种布局来代替NestedScrollView。例如,可以使用CoordinatorLayout和AppBarLayout来实现带有滚动效果的布局。具体来说,可以将AppBarLayout包含在CoordinatorLayout中,然后将RecyclerView放在AppBarLayout下面。这样,RecyclerView就能处理滚动事件而不会受到NestedScrollView的干扰。
另一种方法就是使用Androidx的NestedScrollingParent3来代替 NestedScrollView
如果是在一个Fragment里面嵌套4个RecyclerView,你可以考虑将每个RecyclerView放在单独的Fragment里面,然后在包含这些Fragment的父Fragment中使用ViewPager进行页面切换。这样,每个RecyclerView就能独立处理滚动事件,而不会受到其他RecyclerView的干扰。下面是一个使用CoordinatorLayout和AppBarLayout来实现带有滚动效果的布局的例子:
<androidx.coordinatorlayout.widget.CoordinatorLayout>
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.appcompat.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize" />
</com.google.android.material.appbar.AppBarLayout>
<androidx.recyclerview.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
这里,CoordinatorLayout是父布局,AppBarLayout和RecyclerView是子布局。AppBarLayout包含了一个Toolbar,它将会滚动出屏幕。RecyclerView的layout_behavior属性设置为"appbar_scrolling_view_behavior",这样RecyclerView就能正确地处理滚动事件,与AppBarLayout联动.
此外可以考虑使用一个RecyclerView嵌套另外一个RecyclerView,使用方法类似,只需要使用内部的RecyclerView去代替AppbarLayout就行了.
需要注意的是,上面的例子只是提供一种思路,具体实现还需要根据你的需求来进行修改.