ListFragment
には、ArrayAdapter
が付いていて、Loader
が入力されています。ユーザーがアイテムの1つをクリックすると、選択したアイテムへの参照だけでなく、残りのリストアイテムも別のフラグメントに渡したいと思います。私の質問は、どのようにアダプタからすべてのアイテムを取得する必要がありますか?ArrayAdapterからすべての項目を取得する
1.バッキングList
を参照してくださいので、のようなアダプタを作成します:ここで私が見る可能性がある
List<DomainObject> items = new ArrayList<DomainObject>();
listAdapter = new ArrayAdapter<DomainObject>(getActivity(), R.layout.mine, items);
をして、単にitems
またはそのコピーを渡します次の活動に
私が見ている欠点は、私がコンストラクタに渡したのと同じリストに後で項目が含まれているという文書化されていない事実に頼っていることです。アダプタを介して
2.反復
項目をクリックすると、アダプタを反復処理し、リストを構築します。これは不必要な作業のようです。アイテムは、アダプタのList
に含まれており、私は手動で新しいリストに各アイテムをコピーしています。
3.
は、アダプタに項目を追加する前に、アダプタに追加する際に、アイテムの別のリストを保持し、私はフラグメントに維持する別のリストに追加します。アイテムのリストがArrayAdapter
とそのフラグメントにコピーされるので、これも無駄です。
その記事は大部分が良いですが、私はスレッドセーフティセクション全体を無視しています。 UIスレッド以外で 'notifyDataSetChanged()'が呼び出された場合、 'ArrayAdapter'はすでにクラッシュしているのではないかと、まったく間違っています。 –
@ scompt.com投稿したリンクがArrayAdapterについて間違っていると思います。それはArrayAdapterだけを説明しているようです。私は少し混乱しています... –
theMfromA
あなたがリンクしたページから... "テキストのみを表示できます。" =>間違っています。 msgstr "" "CharSequence項目のリストを提供するように強制します。" =>間違った "TextViewだけを含むレイアウトリソースを提供する必要があります" =>間違っています。すべての仮定は間違っています...私はArrayAdapterがBaseAdapterより優れているが、基本は間違っているという意味はありません。 – Loenix