2

実際には ListView ではなく ExpandableListView ですが、それほど重要ではありません。通常、私はこのようにします:

<ScrollView >

<LinearLayout>
    <ExpandableListView ... />
    <TextView ... />        
</LinearLayout>

</ScrollView>

..しかし、ListViewをScrollView内に配置するのは面倒だと読んだことがあります。ExpandListAdapter (getChildView()) を変更してこれを解決しようとしました:

public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View view, ViewGroup parent) {
        if(isLastChild){
            LayoutInflater inflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
            view = inflater.inflate(R.layout.extra_info_bottom, null);

        }
        else{
                 //get normal item view
        }
        return view;
}

しかし、この方法では、子のみをグループに追加できます。グループの外側の下部に LinearLayout を追加するにはどうすればよいですか?

4

3 に答える 3

3

次のコードを追加して、最後のリストビュー ブロックに線形レイアウトを追加するだけです。

View footerView = ((LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.listfooter, null, false);
                itemlist.addFooterView(footerView);

listfooter は、レイアウト コントロールを定義できる xml ファイルです。

于 2012-06-07T13:24:39.200 に答える
1

スクロール内にリストビューを配置したい理由はありますか?? あなたのレイアウトが次のようなことをするのは意味がありません:

<LinearLayout>
    <ExpandableListView ... />
    <ScrollView >
      <LinearLayout>
         <TextView ... />   
      </LinearLayout>     
    </ScrollView>
</LinearLayout>

このソリューションでは、Expandable List と Scrollview でウェイトを使用して、リストに使用する画面の量と下部の線形レイアウトに使用する量を定義できます。

線形レイアウトをリストの一番下に表示したい場合は、getView の代わりにフッターを使用することをお勧めします。

とにかく、あなたが抱えている正確な問題を解決するために、膨らませようとしているもののxml定義を調べる必要があります.

于 2012-06-07T13:27:31.057 に答える
0

このエラーの原因となっているオブジェクトを特定し、 を使用して実際の className を探してくださいmyObject.getClass().getName()。したがって、実際に膨らませたオブジェクトを確認して、問題を修正することができます。

于 2012-06-07T13:15:43.120 に答える