有没有办法在不重新绑定的情况下更新RecyclerView中的某些项目?

时间:2016-08-10 17:00:25

标签: java android android-recyclerview

假设我在RecyclerView中有40个项目。其中的20个项目都具有相同的意图,每个项目在触摸时将被启动。每隔5秒钟,意图就会改变,因此40个项目中的20个将替换它们的意图

有没有办法更新所有20个项目中的所有意图而不重新绑定它们?

每次重新绑定时,项目都会消失并显示,并且在5秒的时间间隔内,视觉上不会让项目不断出现和消失。

我在想这个变量应该都指向一个对象,这样当该对象得到更新时,项目的意图也会得到更新。但Java是按值传递的,因此没有机会。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

如果视觉效果没有改变,那么没有理由重新绑定。只需将数据提供给需要更新的项目,不要在适配器上调用RecyclerView.Adapter#notifyItemChanged()。 <{1}}将不会收到重新绑定的通知,基础数据也会更新。

如果视觉效果执行更改,但您不希望闪烁,则可以使用不具有动画效果的自定义RecyclerView

更简单的方法可能是在您正在使用的ItemAnimator上简单地调用ItemAnimator#setChangeDuration()值为0,以便它立即开始并完成。