2011-01-21 8 views
2

私は各アイテムが常に1つの子を持つカスタムのExpandableList(下のサンプルの図を参照)で作業しています。この子は3つの部分で構成されています。各部分にはヘッダ(赤い棒)があり、その下には空の項目または項目のリストがあります。このリストの長さは異なります。ExpandableList内でListViewを使用するには?

私がこれをやろうとした最初の方法は、空のアイテムの下にViewStubを追加することです。これはカスタムビューで膨らませました。最後にViewStubが入っていました。アイテムを再帰的に使用して、このようなアイテムのリストを作成します。悲しいことに、これは、リストが長すぎたときにStackOverflowErrorを発生させました(短いリストでは完全に機能しました)。

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

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

alt text

+0

hiiでも、私の子供のリストビューは魅力的ではありません。 –

答えて

1

私が正しくあなたを理解している場合、それでは、ExpandableListAdapterを実装するExpandableList + Adapterを取ってみませんか?それはやや醜いアプローチですが、それは動作し、あまり面倒ではありません。

MyAdapterは、現在のchildPositionは、ヘッダーの1つ又は児童の一つであるとxmlから適切なビューを膨らませるならば、あなたは、単に見つけ出すことができ、この方法ではExpandableListAdapter

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

} 

を実装しています。

+0

ちょっと、私はすでにExpandableListAdapterを実装していましたが、以前は各子ノードを1つの要素(3つのヘッダと3つのリストを持つ要素)として扱っていましたが、n + m + o 3つの子ノード(n、m、oはそれぞれ第1リスト、第2リスト、第3リストのサイズです)をチェックし、どのノードでどのように処理するかを決定します。このソリューションで "convertView"を再利用するのは難しくなります。 – Kasium

+1

私は今このソリューションを実装しており、完全に機能します。 – Kasium

+0

喜んで助けてください。乾杯 – metter

関連する問題