Я пытаюсь обновить представление, отображаемое CursorAdapter сразу после его изменения данных. Каждая строка содержит изображение. Когда я касаюсь этого изображения, база данных обновляется, и я хочу изменить изображение относительно этого обновления данных.
За исключением запроса на курсор, я не нашел решения... Моя база данных действительно большая, а требование слишком тяжелое. У вас есть лучшее решение?
Да, иногда 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
}
};