notifyItemChanged()是否强制调用onBindViewHolder()?

时间:2015-06-24 12:20:08

标签: android android-recyclerview

当我在notifyItemChanged()上拨打RecyclerView时,相应的Views(在这种情况下,按钮)不会按预期更新。我打电话给他们的原因是数据已经改变,这会导致他们的背景颜色发生变化。这是否意味着notifyItemChanged()不会强制拨打onBindViewHolder()

我尝试使用notifyDataSetChanged(),这会导致视图按我的意愿重新加载,所以我知道我的实现是正确的。 (注意我不想使用notifyDataSetChanged(),因为这是低效的,我只把它用作健全性测试)。

1 个答案:

答案 0 :(得分:2)

刷新列表视图注册新观察者以侦听数据更改。 使用registerAdapterDataObserver

适配器可以发布描述特定更改的各种事件。并非所有适配器都支持所有更改类型,如果没有更具体的数据,某些适配器可能会回退到通用的“更改内容”事件。

使用适配器注册观察者的组件负责在完成时取消注册这些观察者。