För det första kan jag inte ta bort en transaktion (rad) hämtad från databasen
Rad 61 castar resultatet av arg0.getItemAtPosition(arg2)
till Cursor
, men returtypen är förmodligen HashMap
(som det står i Logcat-utgången). Normalt får du en Cursor
från en databasfråga.
Om du lägger in ID:t för varje databasrad i HashMap
när du bygger det kommer du att kunna skicka det ID:t till din deleteTransaction()
ring in din onClick
händelse. Så du behöver
temp.put("Id", localCursor.getInt(localCursor.getColumnIndex("_id")));
i getAllTransaction()
, och revidera sedan din onClick()
metod för att göra något så här:
localDbCrud.open();
HashMap itemMap = (HashMap)localAdapter.getItem(arg2);
int item_id = Integer.parseInt((String)itemMap.get("Id"));
DbCrud.deleteTransaction(item_id);
localDbCrud.close();
Jag skulle också föreslå att du byter namn på arg2
(och andra) för att ha tydligare namn så att koden är lättare att följa.
För det andra behöver jag veta hur man uppdaterar listvyn efter att ha tagit bort posten
Du kan anropa notifyDataSetChanged()
på din adapter för att uppdatera ListView
efter att du har gjort en ändring i datamängden.
EDIT:Observera att SimpleAdapter
är avsedd för statisk data, så din körsträcka kan variera. Den bästa lösningen är förmodligen att byta till en annan typ av adapter, till exempel ArrayAdapter
, eller skapa en ny SimpleAdapter
varje gång du ändrar datauppsättningen.