Как программно изменить цвет фона элемента списка? - PullRequest
0 голосов
/ 23 июля 2011

У меня есть список, и мне нужно изменить цвет фона элемента, например, элемента 2.

Я пытался с этим кодом, но он вылетает, потому что третья строка дает nullpointerexception, но списокимеет 11 предметов !!!я не понимаю, в чем проблема

CalendarList = (ListView) findViewById(R.id.CalendarList);
CalendarList.setAdapter(new ArrayAdapter<String>(this, R.layout.list_item, MyApplication.roundMatches(CalendarPicker.getValue())));
CalendarList.getChildAt(2).setBackgroundColor(0xFFFF0000);

Ответы [ 3 ]

0 голосов
/ 23 июля 2011

Вы должны использовать setBackgroundResource(R.color.myRow_red) вместо setBackgroundColor (). В вашем примере цвет фона назначается с идентификатором вместо фактического цвета, описанного в ресурсах. но сначала вы должны проверить getChildAt() вернуть ноль для строк, которые были созданы или нет? перед применением setBackgroundColor()

0 голосов
/ 19 сентября 2011

наконец, ни одно из этих решений не работает, я сделал это другим способом, изменив цвет текста, а не фона

0 голосов
/ 23 июля 2011

Проблема в том, что ListView высоко оптимизирован для создания только тех представлений, которые действительно должны отображаться на экране.Таким образом, getChildAt () вернет null для строк, которые не были созданы.Просто проверьте нулевой возврат из getChildAt ().Если строка 2 (в данном случае) еще не существует, она позже будет создана, когда строка будет заполнена (с помощью getView (), bindView () и т. Д.).Вы можете просто установить соответствующий цвет в это время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...