In primo luogo, non sono in grado di eliminare una transazione (riga) recuperata dal database
La riga 61 trasmette il risultato di arg0.getItemAtPosition(arg2)
su Cursor
, ma il tipo restituito è probabilmente HashMap
(come dice nell'output di Logcat). Normalmente ottieni un Cursor
da una query del database.
Se inserisci l'ID per ogni riga del database nella HashMap
quando lo stai costruendo, sarai in grado di passare quell'ID al tuo deleteTransaction()
chiama il tuo onClick
evento. Quindi, hai bisogno di
temp.put("Id", localCursor.getInt(localCursor.getColumnIndex("_id")));
in getAllTransaction()
, quindi rivedi il tuo onClick()
metodo per fare qualcosa del genere:
localDbCrud.open();
HashMap itemMap = (HashMap)localAdapter.getItem(arg2);
int item_id = Integer.parseInt((String)itemMap.get("Id"));
DbCrud.deleteTransaction(item_id);
localDbCrud.close();
Suggerirei anche di rinominare arg2
(e altri) per avere nomi più chiari in modo che il codice sia più facile da seguire.
In secondo luogo, ho bisogno di sapere come aggiornare la visualizzazione elenco dopo aver eliminato la voce
Puoi chiamare notifyDataSetChanged()
sull'adattatore per aggiornare ListView
dopo aver apportato una modifica al set di dati.
EDIT:Tieni presente che SimpleAdapter
è pensato per dati statici, quindi il tuo chilometraggio può variare. La soluzione migliore è probabilmente passare a un diverso tipo di adattatore, come ArrayAdapter
oppure crea un nuovo SimpleAdapter
ogni volta che modifichi il set di dati.