Элементы ListView меняют цвет фона - PullRequest
1 голос
/ 30 декабря 2011

У меня странное поведение в моем приложении ... A есть ListView, где нечетные элементы имеют #ffffff фон, а четные элементы имеют #f2f7f7, и выглядит так:

Activity start OR touching list (without release)

Однако, как только я начинаю прокручивать список, четные элементы слегка меняют цвет, становясь #f7f7f7, например:

When scrolling and after scroll release

Любые идеи?Если вам нужна дополнительная информация, пожалуйста, спросите.Я озадачен этим поведением.

Дополнительная информация:

Я устанавливаю цвет фона каждого элемента в методе getView(), например:

protected final int[] colors = new int[] { R.drawable.states_list_odd, R.drawable.states_list_even };
...
// Alternates list items' background
int colorPos = position % colors.length;
convertView.setBackgroundResource(colors[colorPos]);

Ответы [ 3 ]

4 голосов
/ 29 января 2012

Простые вещи, на самом деле. android:scrollingCache="false" решил эту проблему.

2 голосов
/ 30 декабря 2011

Представления, используемые для элементов, повторно используются при прокрутке списка (создавать новые нет необходимости).Таким образом, когда вы прокручиваете список вниз, элемент в позиции 0 может отображаться в позиции 10. Это будет тот же объект View, и перед показом getView будет вызываться с параметром convertView, установленным на этот конкретный View - так что вы можете заполнить егос данными (и укажите свои стили).Это просто оптимизация.

Итак, вам нужно указывать цвет фона для элемента каждый раз, когда getView вызывается для него в вашем адаптере списка.

1 голос
/ 11 июля 2012

программно попробуйте это. yourListView.setScrollingCacheEnabled(false);

...