如何防止在RecyclerView中选择项目时,notifyItemChanged()导致涟漪效果消失?

4
我有一个RecyclerView,并且我想允许用户长按选择视图。这个功能本身没有问题,但是当我调用notifyItemChanged()notifyDataSetChanged来指示选定时,水波纹效果会立即终止。我该如何防止这种情况发生?
请注意,此问题以前已经被问过(例如示例1示例2)。对于这些问题的答案是使用notifyItemChanged而不是notifyDataSetChanged。我尝试了这两种方法,但对我来说并没有改变这种行为。

我正在使用drawable作为背景,所以您不需要通知任何更改,只需查看我的问题:RecyclerView 找到state.xml并尝试做类似的事情。 - Yasin Kaçmaz
如果只是接受背景颜色,那将是一个不错的选择,但我真的想对视图进行更积极的更改。 - Donatella Tarrio
你能更具体地说明一下“活动变化”吗? - Yasin Kaçmaz
我有一个自定义视图,它处理边框大小的更改并显示不同的图像。 - Donatella Tarrio
在自定义视图中重写onSelected方法。如果被选中,改变边框大小等并使其无效。 - Fletcher Johns
2个回答

1

notifyItemChanged()方法有两个版本。一个只需要位置,另一个需要位置和有效载荷。

在我的情况下,第一个版本破坏了涟漪效果,而第二个版本有效。至少当我将刚刚更改的对象作为有效载荷传递时。


0

a) 将DiffUtilCallback添加到您的适配器中

b) 确保您的areItemsTheSame方法通过id而不是内容比较项目。 因为如果它按内容比较,它会认为您删除了先前的单元格并插入了新单元格,并杀死涟漪效果。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接