Как различить прочитанные и непрочитанные сообщения в Android ListView?

1

SimpleCursorAdapter используется в моем коде. Курсор содержит поле read (true/false). Если это правда, то строка должна отображаться с серым цветом текста, если false - с белым.

Теги:
android-listview

1 ответ

1
Лучший ответ

Если это так просто, как вы написали, вы можете использовать setViewBinder/setViewValue в своем SimpleCursorAdapter. Ниже будет показан TextView макета строки, который будет окрашен красным, если столбец в вашем курсоре имеет какое-то значение, представляющее для вас интерес. Если есть больше полей, вам нужно применить некоторые незначительные изменения. return true, если вы устанавливаете собственные значения, возвращайте false, если Android должен рисовать:

... create SimpleCursorAdapter
if (simpleCursorAdapter != null) {
  simpleCursorAdapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {

    @Override
    public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
      TextView textView = (TextView) view;

      long l = cursor.getLong(positionOfReadValue);
      if (l == valueOfRead) {
        textView.setTextColor(Color.RED);
      }

      return false;
    }

  } );

  setListAdapter(simpleCursorAdapter);
}
...
  • 0
    Спасибо, @hjw. Могу ли я использовать тот же подход для значка (он будет отображать, прочитан элемент или нет)? Или это не будет эффективно с иконкой?
  • 0
    Конечно, вы можете создать Drawable в onCreate, добавить ImageView в макет строки и установить Drawable, когда другое поле в вашем курсоре имеет интересующее вас значение.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню