setIsRecyclable(false) 使项目在删除后仍保留在后台

问题描述 投票:0回答:1

在使用RecyclerView时,我注意到我删除的单个项目仍然存在于后台。由于我使用

ListAdapter
,所以更改不可能没有通知到
RecyclerViewAdapter

我删除了

setIsRecyclable(false)
中设置的选项
ViewHolder
后,问题就解决了。但只有单个项目绑定到该 ViewHolder 类型,因此理论上
isRecyclable
选项应该不会产生任何影响。

这是一个错误吗?预先感谢。

p.s我正在使用

androidx.recyclerview:recyclerview:1.2.1

编辑: 我经历的情况与这个问题类似。

android android-recyclerview
1个回答
0
投票

我们也面临同样的问题

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
}
© www.soinside.com 2019 - 2024. All rights reserved.