複数のアクティビティを作成する代わりに、必要に応じてArrayAdapter
のListView
を変更したいと思います。 [〜#〜] api [〜#〜] に、setAdapter()
を複数回呼び出しても問題ないかどうかについての言及はありません。
具体的には、ListView
を持つアクティビティを開始したいとします。この例では、ListView
は、たとえばCategoryArrayAdapter
からのlistView.setAdapter(this)
で初期化されます。
次に、ユーザーがカテゴリを選択します。新しいアクティビティを開始せずに、コードは同じListView
に新しいアダプタを設定します。新しいアダプタ、たとえばItemArrayAdapter
はlistView.setAdapter(this)
を呼び出します。
誰かがこれを成功させた経験がありますか、またはこれが行われるべきではない特定の理由を知っていますか?
SetAdapter()を複数回呼び出しても問題ないかどうかについての言及はAPIにありません。
簡単な答えは「はい」です。私は以前に同様のことをしました。
これが、APIに Adapter が存在して提供されている理由です。各リストアイテムの実際のコンテンツ(モデル)とそのレンダリング方法(ビュー)は、Android.widget.AdapterViewに直接バインドされるのではなく、Android.widget.Adapter内で分離および実装されます。アダプターが適切に実装されている限り、setAdapter()メソッドを呼び出すだけで、ListViewにバインドされている実際の基礎となるアダプターを交換/変更できます。
アダプターのリセットは問題ありませんが、アダプターが変更されているビューを新しいデータで再描画する必要があるため、そうするとGUIの不具合が発生する可能性があることに注意してください。これを除けば、あなたは大丈夫なはずです。