旺时已到 2023-01-10 18:03 采纳率: 100%
浏览 34
已结题

困扰了3年的问题,常见布局,RV嵌套的问题

img

困扰自己3年的问题了。想咨询一下同学们。

以前用NestedScrollView嵌套RV,RV无法复用,数据量大必卡顿。后来也明白了卡顿的原因。2020年的时候,百度,CSDN上没有找到解决办法。也就搁浅在哪里了。

人菜瘾大技术差,这不又上瘾了,Fragment页里,想用一个RV里面嵌套4RV去实现。同样遇到无法复用的问题。

在大厂里都怎么去实现这类经典布局呢?

  • 写回答

3条回答 默认 最新

  • m0_54204465 2023-01-10 20:33
    关注

    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就行了.

    需要注意的是,上面的例子只是提供一种思路,具体实现还需要根据你的需求来进行修改.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 1月24日
  • 已采纳回答 1月16日
  • 创建了问题 1月10日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度