0

次の条件に従ってレイアウトをインフレートしたい:

if (...) {
    view = inflater.inflate(R.layout.customer_menu_item, null);
}
else {
    view = inflater.inflate(R.layout.customer_menu_index, null);
    view = inflater.inflate(R.layout.customer_menu_item, null);
}

レイアウトcustomer_menu_indexは、メニューリストにインデックス文字を挿入するためのものです。2 番目のレイアウトは、基本的なメニュー項目を挿入します。

getView(int position, View convertView, ViewGroup parentView)に含まれるメソッドの 1 回の呼び出しで 2 つの異なるレイアウトをインフレートするにはどうすればよいですかBaseAdapter

4

2 に答える 2

1

これで目的が解決するかどうかはわかりませんが、両方のレイアウトを含む xml ファイルを実装することはできません。そして、次のように可視性を操作できます。

view = inflater.inflate("the_layout_from_your_xml", null);

もしも (...){

   view.finViewByID(R.id.customer_menu_index).setVisibility(false);

} そうしないと{

   view.finViewByID(R.id.customer_menu_index).setVisibility(true);

}

それはあなたのために働きますか?

于 2013-01-11T05:03:51.077 に答える
0

getView(int position, View convertView, ViewGroup parentView)に含まれるメソッドの 1 回の呼び出しで 2 つの異なるレイアウトをインフレートするにはどうすればよいですかBaseAdapter

inflate()デバイスのメモリを除いて、呼び出すことができる回数に制限はありません。ただし、else ブロックは最初の値をすぐに上書きするviewため、別の変数の使用を検討してください。

複数の行レイアウトを使用する予定がある場合は、メソッドgetItemViewType()getViewTypeCount()メソッドをオーバーライドする必要があります。オーバーライドしないと、ListView、Spinner などをスクロールするときに動作が不安定になります。

于 2013-01-11T00:30:16.737 に答える