拡張するカスタムアダプタを作成する場合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
も保存されます。これらは実際のコピーではなく、同じリストへの参照であると確信しています。
さて、これが私の質問です。ListViewの処理中に、何らかの理由で自分のリストを新しい新しいリストに置き換える必要がある場合は、次のことも行う必要があると思います。ArrayAdapter
mObjects
mData = new List<Item>();
super.clear();
super.addAll(mData);
そうしないと、ListViewに一貫性がなくなり、getFilter()。filter()などのメソッドが機能しなくなります。
私は正しいですか?