Из документации Android по SimpleCursorAdapter.ViewBinder
:
Связывает столбец курсора, определенный указанным индексом, с
указанный вид. Когда привязка обрабатывается этим ViewBinder, это
метод должен вернуть true. Если этот метод возвращает ложь,
SimpleCursorAdapter попытается обработать привязку самостоятельно.
Другими словами, ваша реализация setViewValue
не должна быть специфической для любого View
, так как SimpleCursorAdapter
будет вносить изменения в каждый View
(в соответствии с вашей реализацией), когда он заполняет ListView
. setViewValue
- это, по сути, ваш шанс сделать все, что вы пожелаете, с данными в Cursor
, включая настройку цвета ваших представлений. Попробуйте что-то вроде этого,
public boolean setViewValue(View view, Cursor cursor, int columnIndex){
// if this holds true, then you know that you are currently binding text to
// the TextView with id "R.id.alarmName"
if (view.getId() == R.id.alarmName) {
final int dayOfWeekIndex = cursor.getColumnIndex("day_of_week");
final int color = cursor.getInt(dayOfWeekIndex);
switch(color) {
case 0: ((TextView) view).setTextColor(Color.RED); break;
case 1: /* ... */ break;
case 2: /* ... */ break;
/* etc. */
}
return true;
}
return false;
}
Обратите внимание, что в приведенном выше коде используется столбец с именем "day_of_week"
, в котором содержится значение int
0-6 (для указания конкретного дня недели).