假设我在RecyclerView中有40个项目。其中的20个项目都具有相同的意图,每个项目在触摸时将被启动。每隔5秒钟,意图就会改变,因此40个项目中的20个将替换它们的意图
有没有办法更新所有20个项目中的所有意图而不重新绑定它们?
每次重新绑定时,项目都会消失并显示,并且在5秒的时间间隔内,视觉上不会让项目不断出现和消失。
我在想这个变量应该都指向一个对象,这样当该对象得到更新时,项目的意图也会得到更新。但Java是按值传递的,因此没有机会。
有什么想法吗?
答案 0 :(得分:2)
如果视觉效果没有改变,那么没有理由重新绑定。只需将数据提供给需要更新的项目,不要在适配器上调用RecyclerView.Adapter#notifyItemChanged()
。 <{1}}将不会收到重新绑定的通知,基础数据也会更新。
如果视觉效果执行更改,但您不希望闪烁,则可以使用不具有动画效果的自定义RecyclerView
。
更简单的方法可能是在您正在使用的ItemAnimator上简单地调用ItemAnimator#setChangeDuration()值为0,以便它立即开始并完成。