BindView после обновления курсора

1

Я пытаюсь обновить представление, отображаемое CursorAdapter сразу после его изменения данных. Каждая строка содержит изображение. Когда я касаюсь этого изображения, база данных обновляется, и я хочу изменить изображение относительно этого обновления данных.

За исключением запроса на курсор, я не нашел решения... Моя база данных действительно большая, а требование слишком тяжелое. У вас есть лучшее решение?

Теги:

1 ответ

0

Да, иногда requery - это не лучшие решения. Обычно я делаю создание методов помощи в адаптере базы данных для извлечения фрагментов кода. Это отрывок из одного из моих адаптеров:

@Override
public void bindView(View view, final Context context, Cursor cursor) {
    String name = cursor.getString(cursor.getColumnIndex("name"));
    long id = cursor.getLong(cursor.getColumnIndex("_id"));
    ((TextView)view.findViewById(R.id.name)).setText(name);

    Button btnFavorite = (Button) view.findViewById(R.id.item_add_favorite);
    btnFavorite.setTag(id);
    btnFavorite.setOnClickListener(mFavoriteCliked);
}

То, что я делаю, это в основном установить зрителя кликов на изображение... и убедиться, что он заботится о правильном изменении его состояния:

private OnClickListener mFavoriteCliked = new OnClickListener() {
    @Override
    public void onClick(View v) {
        // change the image of the v object
    }
};
  • 1
    Когда база данных обновляется, курсор не меняется. Изображение каждой строки будет перерисовано старым курсором в bindView (). База данных изменяется, но представление не меняется. Как изменить вид, если курсор не меняется? Требование курсора решит проблему, но это не эффективно.

Ещё вопросы

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