Erstens kann ich eine aus der Datenbank abgerufene Transaktion (Zeile) nicht löschen
Zeile 61 wandelt das Ergebnis von arg0.getItemAtPosition(arg2)
um zu Cursor
, aber der Rückgabetyp ist wahrscheinlich HashMap
(wie es in der Logcat-Ausgabe steht). Normalerweise erhalten Sie einen Cursor
aus einer Datenbankabfrage.
Wenn Sie die ID für jede Datenbankzeile in die HashMap
einfügen Wenn Sie es erstellen, können Sie diese ID an Ihre deleteTransaction()
übergeben Rufen Sie Ihr onClick
auf Veranstaltung. Sie brauchen also
temp.put("Id", localCursor.getInt(localCursor.getColumnIndex("_id")));
in getAllTransaction()
, und überarbeiten Sie dann Ihr onClick()
Methode, um so etwas zu tun:
localDbCrud.open();
HashMap itemMap = (HashMap)localAdapter.getItem(arg2);
int item_id = Integer.parseInt((String)itemMap.get("Id"));
DbCrud.deleteTransaction(item_id);
localDbCrud.close();
Ich würde auch vorschlagen, arg2
umzubenennen (und andere), klarere Namen zu haben, damit der Code leichter zu befolgen ist.
Zweitens muss ich wissen, wie ich die Listenansicht nach dem Löschen des Eintrags aktualisieren kann
Sie können notifyDataSetChanged()
aufrufen auf Ihrem Adapter, um die ListView
zu aktualisieren nachdem Sie eine Änderung am Datensatz vorgenommen haben.
BEARBEITEN:Bitte beachten Sie, dass SimpleAdapter
ist für statische Daten gedacht, daher kann Ihr Kilometerstand variieren. Die beste Lösung besteht wahrscheinlich darin, zu einem anderen Adaptertyp zu wechseln, z. B. ArrayAdapter
, oder erstellen Sie einen neuen SimpleAdapter
jedes Mal, wenn Sie den Datensatz ändern.