Я считаю, что этот вопрос стоит прочитать, по моему мнению ... Я пытался объяснить в деталях, но абстрагирован, чтобы облегчить ваше чтение.
У меня есть ListView
, заполненный пользовательским CursorAdapter
.
В методе bindView()
я пытаюсь установить цвет ребенка.
Этот дочерний элемент является LinearLayout
, корневым макетом, используемым для элементов в списке. Он находится в файле XML R.layout.list_item
, накачанном в методе newView()
пользовательского CursorAdapter.
Я установил цвет фона, используя код ниже.
LinearLayout root = (LinearLayout) view.findViewById(R.id.list_item_root);
// ...
if (isEvenDay(cal)) {
tvDate.setText(tvDate.getText() + " *");
root.setBackgroundColor(Color.DKGRAY);
}
Не беспокойтесь ни о чем , кроме setBackgroundColor
в блоке if. Вот увидишь.
Ожидаемое поведение: некоторые дети будут окрашены DKGRAY
и будут * добавлены к определенному textView. Другие будут цветом по умолчанию и не имеют этого *. Я использую этот тег * только для того, чтобы убедиться, что это (не напрямую) мой код.
Поведение: , когда ListView первоначально отображается, он выглядит нормально, как и ожидалось. Когда я прокручиваю список, он становится «странным» (я не понимаю), и некоторые дети начинают менять цвета, пока все дети не будут окрашены DKGRAY
.
Теперь самое худшее, что это работает:
LinearLayout root = (LinearLayout) view.findViewById(R.id.list_item_root);
// ...
if (isEvenDay(cal)) {
tvDate.setText(tvDate.getText() + " *");
root.setBackgroundColor(Color.DKGRAY);
} else {
root.setBackgroundColor(Color.GRAY);
}
Надлежащие дети раскрашиваются DKGRAY и GREY, и прокрутка списка не заставит цвета списка сходить с ума. Цвета не меняются, и все кажется в порядке. За исключением, конечно, я не хочу DKGRAY и GREY, я хочу DKGRAY и оставить других детей в покое. ¬¬
Пожалуйста, помогите мне!
Изображения ниже. Посмотрите, как * в первом столбце отлично работает между разными датами, но цвет - нет.
1- Я начинаю прокручивать, и некоторые дети уже неисправны:
2- Я заканчиваю прокрутку вверх и вниз, и, наконец, все дети неисправны:
3- Но когда я установлю цвета для всех детей, прокрутка не облажается: