在RecyclerView中选择项目时,如何防止notifyItemChanged()消除涟漪效应?

时间:2016-09-14 21:24:30

标签: android android-layout android-recyclerview recycler-adapter ripple

我有一个RecyclerView,我想允许用户使用长按选择视图。这种方法很好,只要我调用notifyItemChanged()notifyDataSetChanged以指示选择就会终止涟漪效应。我怎样才能防止这种情况发生?

请注意,之前已经问过这个问题(Example 1Example 2)。这些问题的答案是使用notifyItemChanged代替notifyDataSetChanged。我已尝试过这两种方法,并没有改变我的行为。

2 个答案:

答案 0 :(得分:0)

有两种版本的notifyItemChanged()方法。一个仅占据位置,另一个占据位置和有效载荷。

就我而言,第一个打破了连锁反应,而第二个起作用了。至少当我传递刚刚更改为有效负载的对象时。

答案 1 :(得分:0)

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

b) 确保您的 areItemsTheSame 方法按 id 而不是按内容比较项目。 因为如果按内容比较,它认为你删除了之前的单元格并插入了新的单元格,从而消除了涟漪效应。