ListView
一部のプロパティ セクションで見られるように、一部のエントリ間にいくつかの仕切りがあるを生成したいと考えています。以下の例を参照してください。私は、いくつかのテキストビューとそれに続くリストの次の部分を説明する派手な仕切りの 1 つ、そして再びいくつかのテキストビューでList
構成されるを生成しようとしています。これはどのように行うことができますか?リストに追加するさまざまなビューを作成することを考えましたか? これは行く方法ですか?
4 に答える
私は解決策を得ました。それが最高のものかどうかはわかりません。
このチュートリアルで説明されているように、リストにはArrayAdapterから派生したカスタム アダプターを使用します。アダプター クラスでは、getView メソッドの位置が通常の行かどうかを確認してから、行レイアウトを膨張させます。それが新しいグループの最初の行である場合、通常の行とその上のグループの見出しである見出しレイアウトを膨らませます。
ヘッダーを行の 1 つに混在させたくない場合。次の解決策を検討してください。
getItemViewTypeとgetViewTypeCountの 2 つのメソッドを上書きできます。これで、さまざまな行を表示できるリストができました。getView メソッドでアイテムの予想されるビュー タイプを確認し、それに応じてさまざまなレイアウトをインフレートする必要があります。
リストは、正しいリサイクル ビューのみを getView メソッドに返す方法でリサイクルを処理します。これは、recycleView が null でない場合、現在のセルを表示するために使用できることを意味します。
GPLv3 が受け入れられる場合は、 my を使用できますSectionedAdapter
(アップストリーム コードのためにそのようにライセンスされています)。MergeAdapter
より柔軟で制限の少ないライセンス (Apache 2) が必要な場合は、 my を使用できます。
android.widget.ExpandableListView を探しているのではないかと思います
http://developer.android.com/reference/android/widget/ExpandableListView.html
これに対する答えにも興味があります。これを行うには、もっと簡単な方法が必要です。
Adapter を見ると、 Adapter.getItemViewType(int position) というメソッドがあります。
ListView は、返された項目がヘッダーまたはフッターであるかどうかを示す戻り値 ITEM_VIEW_TYPE_HEADER_OR_FOOTER を定義します。
私は試していませんが、独自のアダプターを作成し、それがヘッダーまたはフッターであることを示すタイプの項目を返す場合、ListView はそれを適切に表示すると思います。