adapter更新数据的常见两种方式:
一、adapter里面new一个集合,对外只提供添加数据和更新数据的方法
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);
}
}
二、通过构造方法从外面传入,更新数据的时候只需在外面集合更新,然后调用adapter.notifyDataSetChanged()方法即可。
注意:两种最好别混用,否则很容易出bug,比如,从外部集合给adapter提供数据集合,但同时又提供以上的updateData()方式更新数据,如果把外部提供给adapter的数据集合传入updateData()因为updateData()会先clear,然后再add,这样就会导致外部数据集合和adapter数据集合(实际上这两种是同一个集合)都被清空。
网友评论