1

個別のグループを追加できるように、ExpandableListView をサブクラス化しようとしています。

個別のグループとは、各グループに異なる子ビュー タイプが含まれていることを意味します (すべての子はグループ全体で同じです)。

あれは:

Group 1
   TextView 1
   TextView 2
   TextView 3
Group 2
   EditText 1
   EditText 2
   EditText 3
...

LinearLayout で 2 つの ELV を積み重ねてみましたが、取得しようとしている主な動作 (これが最初に ELV を使用している唯一の理由です) が失われます: 各リストは個別にスクロール可能になります。複数のグループを含む単一の ELV が使用されている場合、それらはすべて一緒にスクロールします)。

投稿はもう見た

Androidの親の展開可能なリストに画像を追加するには?

しかし、これは私が探しているものではありません。これにより、グループ内の複数の個別の子の問題が解決されます。

Group 1
    TextView 1
    Image 1
    ----------
    TextView 2
    Image 2
    ...

十分な時間があれば、これから理解できると思いますが、以前に誰かがすでにそれを行っているかどうかを確認したかった.

私はすでに ELV アダプターを実装しており、すべてが正常にコンパイルおよび実行されており、この特定の問題を解決するためにコードを適応させる準備ができています。

ありがとうございました。

4

1 に答える 1

2

アンドロイドからのサポートはありません。一般的なアプローチの 1 つは、リスト要素のラッパー オブジェクトを作成することです。たとえば、 と をリストに表示しCarたいPerson場合は、次のようにします。

class ListElement {
  Car car = null;
  Person person = null;
}

実行時には、carまたはpersonが null です。の実装ではgetView()、次のようなことを行います。

ListElement e = getItem(position);
if (e.car != null) {
  // create view for Car
} else if (e.person != null) {
  // create view for Person
} else {
  // error!
}

変換ビューを使用する場合 (使用する必要があります)、注意が必要です。たとえば、変換ビューが に対して膨張した場合Car、 のビューを取得することになっていますPersonCarこれを処理する方法は、とビューの両方を含む uber ビューを作成することです。Person次に、 でそれぞれの部分を表示または非表示にするだけですgetView()

<FrameLayout ...>
  <LinearLayout android:id="@+id/car_layout" ... />
  <LinearLayout android:id="@+id/person_layout" ... />
</FrameLayout>

もう 1 つの方法は、2 つの別個ListViewの expandable を持つことです。

于 2013-01-28T22:00:19.443 に答える