当您创建自定义适配器扩展ArrayAdapter<T>
时,它通常具有以下形式:
public class ListAdapter extends ArrayAdapter<Item> {
private List<Item> mData;
public ListAdapter(Context context, int resource, List<Item> data) {
super(context, resource, data);
mData = data;
}
}
数据最初保存在私有成员mData
中,但也ArrayAdapter
将数据保存在自己的成员mObjects
中。我很确定这些不是实际副本,而是对同一列表的引用。
现在,这是我的问题,如果在ListView处理过程中,由于某种原因,您必须将自己的列表替换为新的列表,我认为您也应该这样做:
mData = new List<Item>();
super.clear();
super.addAll(mData);
否则ListView会没有一致性,getFilter().filter()之类的方法也不起作用。
我对么?