8

AndroidでArrayAdapterから基になるArrayListを取得するにはどうすればよいですか?

これは可能ですか、それとも個別に追跡する必要がありますか?

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, new ArrayList<String>());
ArrayList<String> underlying = 
4

4 に答える 4

5

これを行うと、基になるものを取得できますArrayList

ArrayList<String> underlying =  = new ArrayList<String>();
for (int i = 0; i < adapter .getCount(); i++)
    underlying .add(adapter .getItem(i));
于 2013-05-01T06:54:46.973 に答える
1

この機能がない場合は、代わりに BaseAdapter を拡張することで、ニーズに合ったアダプターを簡単に作成できると思います。

リストを CTOR 経由でアダプターに送信するだけで、後でアダプターの外部からリストを変更し、完了したら notifyDataSetChanged を呼び出すことができます。

ただし、アダプターのリストの元のインスタンスがある場合は、マルチスレッドの問題を処理する (または UI スレッド経由でのみアクセスする) 必要があり、それを変更する (特にアイテムを追加/削除する) 場合は、次のようにする必要があります。常に notifyDataSetChanged を呼び出します。

于 2013-05-01T07:03:54.097 に答える
0

アプローチは異なりますが、ニーズを十分に満たす可能性があります。アダプターを「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);
于 2015-08-26T06:00:12.670 に答える