场景
因为RecyclerView自带ViewHoler,所以会自动复用Item。
有时候因为这个会产生一些条目数据错误。
最简单的停止复用
recyclerView.getRecycledViewPool().setMaxRecycledViews(viewType,0);
参数说明
setMaxRecycledViews(int viewType,int max);
viewType: 值必须和getItemViewType()的返回值保持一致。如果是多类型Item,选择不想用复用的item的值。
max:设置缓存池里最多持有几个ViewHolder,设置为0就不存在复用。
缺点
如果这样设置后,列表条目增加,数据变大时,会造成性能下降,甚至是oom.
列表数据不多的场景可以这样做。
数据偏多的时候还是建议使用SparseArray缓存item的状态。
本文深入探讨了RecyclerView中ViewHoler的复用机制,解释了为何有时会导致条目数据错误,并提供了解决方案:通过设置setMaxRecycledViews来控制ViewHolder的复用数量,避免数据错误。同时,文中也指出了该方法的性能缺点,建议在数据量适中的情况下使用,对于大数据量场景则推荐使用SparseArray缓存item状态。
1065

被折叠的 条评论
为什么被折叠?



