У меня есть некоторые проблемы с ListView
(это больше визуальная проблема), он запоминает данные, такие как текстовые значения из TextViews
, из строк ListView
, но запутывает или забывает аспекты, касающиеся TextViews
цвет фона.Проблема проявляется только тогда, когда ListView
содержит много строк.Я работаю с SimpleCursorAdapter
и ViewBinder
и хочу выделить TextView
, если возникает условие:
В реализации ViewBinder
:
public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
CharSequence display;
if(view.getId() == R.id.dueDate){
long timestamp = Long.parseLong(cursor.getString(3));
display=DateUtils.getRelativeTimeSpanString(timestamp);
if(timestamp+DaysToMillis(5)> new Date().getTime())
((TextView) view).setBackgroundResource(R.color.marker_red);
((TextView) view).setText(display);
return true;
}
else
return false;
}
Итак, еще раз:когда есть много строк, ListView
, кажется, запутывает цвет фона.Иногда, когда я перезаправляю, это снова меняет фон TextView
, и я не могу найти ошибку или логику ListView
.
Итак, setViewValue(..)
метод вызывается каждый раз перед надуванием строки?Даже если вы прокрутите вверх или вниз, и строка, которая больше не видна, снова станет видимой?Или метод setViewValue(..)
вызывается только для начального процесса раздувания строк, а затем созданные объекты сохраняются в памяти ListView
?
PS Текстовые значения из того же TextView
отображаются правильно,Я использовал ту же логику в том же методе setViewValue(..)
.