2

私はカスタムExpandableList(下の例の画像を参照)を使用しており、各アイテムには常に1つの子があります。この子は3つの部分で構成されています。各部分にはヘッダー(赤いバー)があり、その下には空のアイテムまたはアイテムのリストがあります。このリストの長さは異なります。

これを行う最初の方法は、空のアイテムの下にViewStubを追加することです。これは、カスタムビューで膨らませました。これには、次のアイテムのために順番に膨らませた最後にViewStubも含まれているため、アイテムを再帰的に追加して作成します。この種のアイテムのリスト。悲しいことに、これにより、リストが長くなりすぎたときにStackOverflowErrorが発生しました(短いリストでは、これは完全に機能しました)。

そのため、2回目の試行では、代わりにカスタムアダプタでListViewを使用してみました。残念ながら、このリストは画面のごく一部と、次の部分のヘッダーの後ろに隠れている残りのアイテムのみを使用していました(このミニリストは、2番目のスクロールバーが横に表示されたためスクロール可能に見えましたが、スクロールしませんでした。スクロールリスト内でのこのスクロールは良い解決策であると考えますが、これについて言及したかっただけです)。

このアイテムのリストをスクロールできないように指示して、必要なすべてのスペースを占有する方法を教えてもらえますか(子ノードが作成されたときにどのサイズになるかわかりますか??)、または私の問題の代替解決策は?(ああ、私はレイアウト内に不潔な量のViewStubsを入れることを検討しましたが、それはばかげて本当に悪い習慣のようです。間違っている場合は訂正してください)

代替テキスト

4

1 に答える 1

1

私があなたを正しく理解しているなら、ExpandableListAdapterを実装するExpandableList + Adapterを使ってみませんか?これはやや醜いアプローチですが、機能し、それほど面倒ではありません。

MyAdapterはExpandableListAdapterを実装します

@Override
public View getChildView(int groupPosition, int childPosition,boolean isLastChild, View convertView, ViewGroup parent) {

}

このメソッドでは、現在のchildPositionがヘッダーの1つであるか、子の1つであるかを簡単に把握し、xmlから適切なビューを膨らませることができます。

于 2011-01-22T16:14:30.287 に答える