1

ListView と、アダプターの getView メソッドを上書きするリスト項目に交互の背景色を設定するアダプターがあります。

さらに進んで、各行にリソースの背景を設定したいと思います。getView でメソッド setBackgroundResource を呼び出してみます。

private int[] messages = new int[] {R.layout.message,R.layout.message2};
//...
public View getView(int position, View convertView, ViewGroup parent) {
View v = super.getView(position, convertView, parent);
int MessagePos = position % messages.length;
v.setBackgroundResource(messages[MessagePos]);
return v;}

しかし、これは機能しません。例外によってスローされるメッセージは、ドローアブル リソース ID #0x7f030004 からの File res/layout/message.xml です。

何か案は?

ありがとう!

4

1 に答える 1

1

レイアウトファイルをバックグラウンド リソースに設定することはできません。バックグラウンド リソースは画像ファイル用です。あなたが望むのは、位置に応じて異なるレイアウトファイルを膨らませるか、背景色を次のように設定することです:

int colors = {0xFFFF0000, 0xFF0000FF};
v.setBackgroundColor(colors[MessagePos]};

リストされている 2 つの色は、鮮やかな赤と鮮やかな青です。これらの色の定義方法に慣れていない場合は、HTML カラー コードを調べてください。

さまざまなレイアウト ファイルをインフレートするのは難しくありませんが、より多くのコードが必要になります。基本的には、コンテキストから LayoutInflater を取得してから呼び出すことになりますinflater.inflate(context.getResources(), R.layout. .....);。Google で検索すると、優れたチュートリアルがたくさんあります。

于 2010-05-10T10:20:35.483 に答える