Android - 为什么我们使用adapter.notifydatasetChanged()方法?
我正在使用Recyclerview实现记事本应用程序。Android - 为什么我们使用adapter.notifydatasetChanged()方法?
当添加,删除和编辑注释时,我将返回一个newListnote,它被修改后显示在UI上并调用adapter.NotifyDataSetChanged()。
public static void UpdateUI(List<Entity_NoteItem> newlistNote) {
/*listNoteToDisplayOnUI = newListNote();
adapter.notifyDataSetChanged();*/
adapter = new DisplayUI_CustomIconLabelAdapter(adapter.context, newlistNote);
myRecyclerView.setAdapter(adapter);
}
但我意识到,如果我分配被设置为转接器的数据由另一目的与另一存储器地址,该方法NotifyDataSetChanged的listNote()将没有任何效果。 因此,我决定使用新的listNote创建新的适配器,并调用myRecyclerView.setAdapter(adapter)并获得更多效果。
而我的问题是:为什么我们应该使用方法Adapter.NotifyDataSetChanged(),而我们可以完全新的适配器与改变的数据和setAdapter再次?
谢谢!
为什么我们应该使用方法Adapter.NotifyDataSetChanged(),而我们可以完全新的Adapter与改变的数据和setAdapter再次?
当您拨打setAdapter(...)
时,会从头开始创建所有行。当使用notifyDataSetChanged()
时,旧行可以重新使用。所以如果你想要表现,你应该使用notifyDataSetChanged()
。
而且RecyclerView.Adapter有这些方法太:
notifyItemChanged(int)
notifyItemInserted(int)
notifyItemRemoved(int)
notifyItemRangeChanged(int, int)
notifyItemRangeInserted(int, int)
notifyItemRangeRemoved(int, int)
很好的答案,谢谢 – Duy
一遍又一遍做setAdapter可能是低效的。适配器本身倾向于管理数据。 notifyDataSetChanged将负责最佳地更新用户界面。 – jaibatrik
感谢您的回答 – Duy