For det første er jeg ikke i stand til at slette en transaktion (række) hentet fra databasen
Linje 61 caster resultatet af arg0.getItemAtPosition(arg2)
til Cursor
, men returtypen er sandsynligvis HashMap
(som der står i Logcat-outputtet). Normalt får du en Cursor
fra en databaseforespørgsel.
Hvis du indsætter ID'et for hver databaserække i HashMap
når du bygger det, så vil du være i stand til at videregive dette id til din deleteTransaction()
indkald din onClick
begivenhed. Så du har brug for
temp.put("Id", localCursor.getInt(localCursor.getColumnIndex("_id")));
i getAllTransaction()
, og revider derefter din onClick()
metode til at gøre noget som dette:
localDbCrud.open();
HashMap itemMap = (HashMap)localAdapter.getItem(arg2);
int item_id = Integer.parseInt((String)itemMap.get("Id"));
DbCrud.deleteTransaction(item_id);
localDbCrud.close();
Jeg vil også foreslå at omdøbe arg2
(og andre) for at have klarere navne, så koden er lettere at følge.
For det andet har jeg brug for at vide, hvordan jeg opdaterer listevisningen efter sletning af posten
Du kan kalde notifyDataSetChanged()
på din adapter for at opdatere ListView
efter du har foretaget en ændring af datasættet.
EDIT:Bemærk venligst, at SimpleAdapter
er beregnet til statiske data, så dit kilometertal kan variere. Den bedste løsning er sandsynligvis at skifte til en anden type adapter, såsom ArrayAdapter
, eller lav en ny SimpleAdapter
hver gang du ændrer datasættet.