RecyclerView解决数据混乱,禁止复用

场景

因为RecyclerView自带ViewHoler,所以会自动复用Item。
有时候因为这个会产生一些条目数据错误。

最简单的停止复用

recyclerView.getRecycledViewPool().setMaxRecycledViews(viewType,0);

参数说明

setMaxRecycledViews(int viewType,int max);

viewType: 值必须和getItemViewType()的返回值保持一致。如果是多类型Item,选择不想用复用的item的值。
max:设置缓存池里最多持有几个ViewHolder,设置为0就不存在复用。

缺点

如果这样设置后,列表条目增加,数据变大时,会造成性能下降,甚至是oom.
列表数据不多的场景可以这样做。
数据偏多的时候还是建议使用SparseArray缓存item的状态。

原创文章 65 获赞 26 访问量 10万+

猜你喜欢

转载自blog.csdn.net/adojayfan/article/details/87934157