sql >> Database teknologi >  >> RDS >> SQLite

Slet forespørgsel og opdater i ListView i Android (sqlite)

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.




  1. SQL-forespørgsel til at sammenligne produktsalg efter måned

  2. Avanceret SQL:CROSS APPLY og OUTER APPLY

  3. SQL Azure:Database XXXYYY på serveren er ikke tilgængelig i øjeblikket

  4. Hvordan opretter man forbindelse til MySQL på Amazon EC2 fra Windows?