RecycleView在ScrollView中会自动一次性加载所有的条目,有什么好的解决方案

RecycleView在ScrollView中会自动一次性加载所有的条目

这个问题也是无意中发现的,起初在刷新时发现会有少许的卡顿,一直找不到原因,今天因为其他的问题,在log时发现RecycleView 自动把所有的条目一次性加载完了 (正确应该是只加载可见条目,然后在滑动时不断复用),多次尝试后发现是ScrollView嵌套的问题。
不知道为什么会这样,有发现呢同样问题的朋友吗,有什么好的解决方案?

阅读 15.1k
4 个回答

你嵌套使用的话,需要计算recyclerview的item高度,所以会一次性全部加载…… 正确的做法是使用recyclerview,加入head或者foot来实现需求。

RecyclerView只能和NestedScrollView搭配使用,它和ScrollView一起使用时会有滚动的问题。另外,在这种使用场景下,RecyclerView会把所有的ItemView都测量出来,实际效果同将RecyclerView设置layout_height=“wrap_content”的情况,这个是和NestedScrollView测量算法有关的。

综上所述,不建议这样搭配使用。可选方案:

  1. RecyclerView + HeaderView,较为简单

  2. CoordinatorLayout + RecyclerView,有坑需要自己填

为什么要嵌套?不要使用ScrollView嵌套列表

新手上路,请多包涵

你可以试试阿里的vLayout这个框架,或者你也可以使用recyclerview 根据itemType进行布局设置

推荐问题