當您創建擴展ArrayAdapter<T>
自定義適配器,它通常有以下形式:的Android的ListView適配器的數據,mantaining一致性
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()這樣的方法將不起作用。
我說得對嗎?
@streetsofboston在你看來,如果不是'data.clear()'你執行'data = null',你會怎麼做? :::我提前道歉,我知道這不是一個討論論壇,所以也許最好是標記一個aswer,並把這個問題放在可以討論的地方。 – ilomambo 2013-02-26 20:20:29
「data = null;」不會爲ListAdapter做任何事情。 – 2013-02-27 14:13:29