当我在notifyItemChanged()
上拨打RecyclerView
时,相应的Views
(在这种情况下,按钮)不会按预期更新。我打电话给他们的原因是数据已经改变,这会导致他们的背景颜色发生变化。这是否意味着notifyItemChanged(
)不会强制拨打onBindViewHolder()
?
我尝试使用notifyDataSetChanged()
,这会导致视图按我的意愿重新加载,所以我知道我的实现是正确的。 (注意我不想使用notifyDataSetChanged()
,因为这是低效的,我只把它用作健全性测试)。
答案 0 :(得分:2)
刷新列表视图注册新观察者以侦听数据更改。 使用registerAdapterDataObserver
适配器可以发布描述特定更改的各种事件。并非所有适配器都支持所有更改类型,如果没有更具体的数据,某些适配器可能会回退到通用的“更改内容”事件。
使用适配器注册观察者的组件负责在完成时取消注册这些观察者。