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 的文件 res/layout/message.xml

有任何想法吗?

谢谢!

4

1 回答 1

1

您不能将布局文件设置为后台资源。背景资源用于图像文件。您想要的是根据位置膨胀不同的布局文件或设置背景颜色,如下所示:

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

列出的两种颜色是亮红色和亮蓝色。如果您不熟悉这些颜色的定义方式,请查看 HTML 颜色代码。

膨胀不同的布局文件并不难,但需要更多的代码。基本上它归结为从您的上下文中获取 LayoutInflater,然后调用inflater.inflate(context.getResources(), R.layout. .....);. 如果你用谷歌搜索,有很多很好的教程。

于 2010-05-10T10:20:35.483 回答