Ich habe einen RecyclerView. Wenn ich auf die Schaltfläche zum Löschen klicke, wird ein Objekt aus dem RecyclerView entfernt, aber wenn ich die App neu starte, kommt das Objekt zurück. Hier ist die Funktion in meiner Datenbank Klasse:Artikel aus der SQLite-Datenbank, die nicht in RecyclerView gelöscht wird
public boolean deleteList(long rowId) {
return db.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0;
}
Hier ist meine Adapter-Klasse mit der Löschtaste:
@Override
public void onBindViewHolder(RecyclerViewViewHolder viewHolder, final int position) {
viewHolder.name.setText(list.get(position).name);
viewHolder.date.setText(list.get(position).date);
viewHolder.delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
RecyclerViewListSchema item = list.get(position);
SQLiteDatabaseAdapter database = new SQLiteDatabaseAdapter(view.getContext());
database.open();
boolean deleteList = database.deleteList((long) position);
list.remove(position);
notifyItemRemoved(position);
database.close();
}
});
}
Update: ich hinzugefügt habe eine Commit-Funktion in meiner deleteList
Funktion wie folgt :
public boolean deleteList(long rowId) {
db.beginTransaction();
try {
db.setTransactionSuccessful();
}
catch (Exception e) {
Log.v("Commit", "Error: + " + e);
}
finally {
db.endTransaction();
}
return db.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0;
}
Ich bekomme auch nichts in den Android Monitor. Wie kann ich dieses Problem beheben?
ist die Liste von der Datenbank gefüllt? Vermisst du ein Commit? –
@dumb_terminal Ja. Die Liste wird von der Datenbank ausgefüllt. –
dann wird definitiv das Element nicht aus db entfernt. Zwei Dinge können hier existieren. 1. Die Löschlogik ist nicht erfolgreich. 2. Das Löschen ist erfolgreich, aber die Änderung wird nicht an db übergeben. –