最近在做公司项目的时候,有一个设计是,一个页面,上面是一个普通的布局控件,下面是一个list,需要整体滑动,因此就使用了NestedScrollView 里面包线性布局,线性布局里面普通的控件+recyclerview,采用的是分页加载,刚开始测试数据没有问题,越加载的更多,越来越卡,最后直接ANR,整的我一脸懵逼,因为recyclerview是能进行布局复用的,加载大量数据是不可能出现ANR的,最终调试发现,onCreateViewHolder()被频发调用,原来,用NestedScrollView 嵌套RecyclerView的时候,RecyclerView会把所有的item一次性全部加载完,数据量小的时候,没什么感觉,但是等到数据量变大的时候,就会出问题。
最终解决方案:
①去掉NestedScrollView ,让RecyclerView单独滑动,这样就不会出现这种问题了,但是产品不一定同意。
②完美解决方式:采用多布局,让recyclerview上面的控件作为一个item加载进recyclerview上的第一个item,下面的item放list数据,这样就解决了~
特此记录一下~!