adapter更新數(shù)據(jù)的常見兩種方式:
一、adapter里面new一個(gè)集合,對(duì)外只提供添加數(shù)據(jù)和更新數(shù)據(jù)的方法
MyAdapter extends BaseAdapter {
ArrayList<T> mItemList = new ArrayList<T>();
? ? ?public MyAdapter(){}
? ? ?public void updateData(List<T> list) {
? ? ? ? ? ?if(null == list) return;
mitemlist.clear();
mitemlist.addAll(list);
notifyDataSetChanged();
}
public void addItem(T data) {
mitemlist.add(data);
}
public void addData(List<T> list) {
if(null == list) return;
mitemlist.addAll(list);
}
}
二、通過構(gòu)造方法從外面?zhèn)魅?,更新?shù)據(jù)的時(shí)候只需在外面集合更新,然后調(diào)用adapter.notifyDataSetChanged()方法即可。
注意:兩種最好別混用,否則很容易出bug,比如,從外部集合給adapter提供數(shù)據(jù)集合,但同時(shí)又提供以上的updateData()方式更新數(shù)據(jù),如果把外部提供給adapter的數(shù)據(jù)集合傳入updateData()因?yàn)閡pdateData()會(huì)先clear,然后再add,這樣就會(huì)導(dǎo)致外部數(shù)據(jù)集合和adapter數(shù)據(jù)集合(實(shí)際上這兩種是同一個(gè)集合)都被清空。