25

ListViewアプリケーションのメイン画面を表示するために を使用しています。
メイン画面は基本的に、menuアプリケーションのさまざまなセクションに入るためのものです。現在、その内容がメソッド ListViewにプログラムで追加されています。onCreate

これを行うコード スニペットを次に示します。

String[] mainItems = {
    "Inbox", "Projects", "Contexts", "Next Actions"
}

@Override
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.main);

    setListAdapter(new ArrayAdapter<String>(
            this, android.R.layout.simple_list_item_1, mainItems));
    registerForContextMenu(getListView());
}

したがって、メニューは基本的に、mainItems 配列に含まれるテキストを含む一連のノードにすぎません。ImageView と TextView を含む XML レイアウト (つまりR.layout.mainMenu_item) を作成できることはわかっていますが、ImageView のアイコンを設定する方法がわかりません。setImageResouce(int resId) メソッドがあることを確認しましたが、ArrayAdapter で生成するときにこれを使用する方法がわかりません。これを行うより良い方法はありますか?

4

2 に答える 2

18

ListView に対して通常行うことは、便利な BaseAdapter クラスを拡張して独自の Adapter を実装することです。実装する抽象メソッドの 1 つは、前の投稿者が述べたように getView() です。そこから、ImageView を含むレイアウトをインフレートし、findViewById を使用して参照を取得し、リソースに追加したドローアブルに画像を設定できます。

public View getView(int position, View convertView, ViewGroup parent) {

    View row = inflater.inflate(R.layout.menu_row, null);

     ImageView icon = (ImageView) row.findViewById(R.id.icon);
     icon.setImageResource(..your drawable's id...);

     return view;
}
于 2008-12-03T22:46:12.073 に答える
1

ArrayAdapterのGoogleドキュメントから。

配列表示にTextViews以外のもの(ImageViewsなど)を使用する場合、またはtoString()結果以外のデータの一部をビューに入力するには、getView(int、View、ViewGroup)をオーバーライドして、必要なビューのタイプを返します。

于 2008-11-26T23:43:43.347 に答える