sql >> Databasteknik >  >> RDS >> SQLite

Ta bort fråga och uppdatera i ListView i Android (sqlite)

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.




  1. MySQL &MariaDB Query Caching med ProxySQL &ClusterControl

  2. TO_CHAR av en Oracle PL/SQL TABLE-typ

  3. Care To Know-klausuler:Allt om SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY och LIMIT

  4. Ansluter IRI Software till Oracle