在使用RecyclerView时,我注意到我删除的单个项目仍然存在于后台。由于我使用
ListAdapter
,所以更改不可能没有通知到RecyclerViewAdapter
。
我删除了
setIsRecyclable(false)
中设置的选项ViewHolder
后,问题就解决了。但只有单个项目绑定到该 ViewHolder 类型,因此理论上 isRecyclable
选项应该不会产生任何影响。
这是一个错误吗?预先感谢。
p.s我正在使用
androidx.recyclerview:recyclerview:1.2.1
。
编辑: 我经历的情况与这个问题类似。
我们也面临同样的问题
setIsRecyclable(false)
。
根据官方文档
对 setIsRecyclable() 的调用应始终配对(对 setIsRecyclabe(false) 的一次调用应始终与稍后对 setIsRecyclable(true) 的调用相匹配)
使 View Holder 不可回收的正确方法是将 recycledViewPool
中的值设置为0
这就是我们修复它的方法。
recyclerView.recycledViewPool.setMaxRecycledViews(<ITEM VIEW TYPE>, 0)
<ITEM VIEW TYPE>
= 在函数中返回的项目视图类型的整数值
override fun getItemViewType(position: Int): Int {
val viewType = list[position].viewType
return viewType
}