У меня есть ImageButton, который я хочу использовать для установки логического значения для элемента в SQLiteDatabase.
ImageButton отобразит одно изображение со значением «1», а другое изображение со значением «0». Нажатие кнопки изображения должно переключать поле базы данных и, следовательно, его изображение.
По какой-то причине, когда я нажимаю кнопку, значение, возвращаемое currentCursor.getInt (), остается прежним, несмотря на то, что метод обновления вызывается для базы данных. Нужно ли обновлять / обновлять курсор?
В своей деятельности я имею:
private void updateFavouriteButton(){
int favourite = currentCursor.getInt(currentCursor.getColumnIndex(Object.favourite));
if (favourite == 1)
{
favouriteButton.setImageDrawable(getResources().getDrawable(R.drawable.favourite_selected));
favouriteButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
dbHelper.updateFavourite(selectedId, 0);
updateFavouriteButton();
}
});
}
else
{
favouriteButton.setImageDrawable(getResources().getDrawable(R.drawable.favourite));
favouriteButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
dbHelper.updateFavourite(selectedId, 1);
updateFavouriteButton();
}
});
}
}
В моей базе данных помощник:
public void updateFavourite(long rowId, int favourite)
{
db.beginTransaction();
try {
ContentValues args = new ContentValues();
args.put("ZFAVOURITE", favourite);
int rowsAffected = db.update("ZOBJECT", args,"_id" + "=" + rowId, null);
if (rowsAffected > 0)
db.setTransactionSuccessful();
} catch (Exception e) {
Log.e("Error in transaction", e.toString());
} finally {
db.endTransaction();
}
}