Listview с альтернативными ресурсами в Android - PullRequest
1 голос
/ 10 мая 2010

У меня есть 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;}

Но это не работает, и я выкидываю сообщение по исключению: Файл res / layout / message.xml из идентификатора нарисованного ресурса # 0x7f030004

Есть идеи?

Спасибо!

1 Ответ

1 голос
/ 10 мая 2010

Вы не можете установить файл layout в качестве фонового ресурса. Фоновый ресурс предназначен для файла изображения. Вам нужно либо накачать другой файл макета в зависимости от позиции, либо установить цвет фона следующим образом:

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

Два перечисленных цвета - ярко-красный и ярко-синий. Если вы не знакомы с тем, как определяются эти цвета, посмотрите HTML-коды цветов.

Раздувать разные файлы макетов несложно, но требуется больше кода. В основном все сводится к получению LayoutInflater из вашего контекста, а затем к вызову inflater.inflate(context.getResources(), R.layout. .....);. Есть много хороших учебных пособий, если вы ищете их в Google.

...