我有RecyclerView
的垂直LinearLayoutManager
,ViewHolder
有三种项目类型和三种不同的notifyItemChanged(0, "countdown")
s。这是一个带注释的屏幕,第一行是帖子,其余是注释,最后一行是“无限滚动”加载行。
带帖子的第一行有一个倒计时,我每隔一秒就会通过bind
更新一次。帖子已正确更新,使用正确的有效负载调用notifyItemChanged(0, "countdown")
。在帖子下面只有一条评论可见。
问题是这个RecyclerView
调用也绑定了不可见的行2和3.如果我更新帖子的布局,那么两个注释是可见的,那么只调用不可见行3的更新(加上与帖子上的有效负载绑定)。显然,这些绑定在没有有效载荷的情况下被调用。所以它完全重新加载行的数据,这是我不想要的,这是浪费。
现在有趣的是,如果我滚动RecyclerView
一点点(甚至1 px),这种行为就会停止,只有第一行即邮件正在接收绑定调用。当我滚动回到顶部时,不会为不可见的单元格调用绑定。因此,在一个小小的卷轴之后,这一切都得到了解决。
仅限帖子+无限滚动行的其他屏幕不会像这样表现并且可以正常工作。
支持库27.0.2
中的{{1}}会发生这种情况。
修改 这是在预取和打开时发生的,并且具有不同的值,例如2,4。