AndroidでArrayAdapterから基になるArrayListを取得するにはどうすればよいですか?
これは可能ですか、それとも個別に追跡する必要がありますか?
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, new ArrayList<String>());
ArrayList<String> underlying =
AndroidでArrayAdapterから基になるArrayListを取得するにはどうすればよいですか?
これは可能ですか、それとも個別に追跡する必要がありますか?
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, new ArrayList<String>());
ArrayList<String> underlying =
これを行うと、基になるものを取得できますArrayList
ArrayList<String> underlying = = new ArrayList<String>();
for (int i = 0; i < adapter .getCount(); i++)
underlying .add(adapter .getItem(i));
この機能がない場合は、代わりに BaseAdapter を拡張することで、ニーズに合ったアダプターを簡単に作成できると思います。
リストを CTOR 経由でアダプターに送信するだけで、後でアダプターの外部からリストを変更し、完了したら notifyDataSetChanged を呼び出すことができます。
ただし、アダプターのリストの元のインスタンスがある場合は、マルチスレッドの問題を処理する (または UI スレッド経由でのみアクセスする) 必要があり、それを変更する (特にアイテムを追加/削除する) 場合は、次のようにする必要があります。常に notifyDataSetChanged を呼び出します。
アプローチは異なりますが、ニーズを十分に満たす可能性があります。アダプターを「ArrayAdapter」から拡張し、配列を外部で宣言してから、アダプターの作成時に配列をコンストラクターに渡します。
//Adapter Declaration
class MyArrayAdapter extends ArrayAdapter<MyType> {}
//Externally declared ArrayList:
ArrayList<MyType> myList = new ArrayList<MyType>();
//Adapter Instantiation (in your activity)
MyArrayAdapter adapter = new MyArrayAdapter(this, myList);