Tout d'abord, je ne parviens pas à supprimer une transaction (ligne) extraite de la base de données
La ligne 61 transtype le résultat de arg0.getItemAtPosition(arg2)
au Cursor
, mais le type de retour est probablement HashMap
(comme il est dit dans la sortie Logcat). Normalement, vous obtenez un Cursor
à partir d'une requête de base de données.
Si vous mettez l'ID de chaque ligne de la base de données dans le HashMap
lorsque vous le construisez, vous pourrez alors transmettre cet ID à votre deleteTransaction()
appelez votre onClick
un événement. Donc, vous avez besoin
temp.put("Id", localCursor.getInt(localCursor.getColumnIndex("_id")));
dans getAllTransaction()
, puis révisez votre onClick()
méthode pour faire quelque chose comme ça :
localDbCrud.open();
HashMap itemMap = (HashMap)localAdapter.getItem(arg2);
int item_id = Integer.parseInt((String)itemMap.get("Id"));
DbCrud.deleteTransaction(item_id);
localDbCrud.close();
Je suggérerais également de renommer arg2
(et autres) pour avoir des noms plus clairs afin que le code soit plus facile à suivre.
Deuxièmement, j'ai besoin de savoir comment actualiser la liste après avoir supprimé l'entrée
Vous pouvez appeler notifyDataSetChanged()
sur votre adaptateur pour actualiser la ListView
après avoir apporté une modification à l'ensemble de données.
EDIT :Veuillez noter que SimpleAdapter
est destiné aux données statiques, votre kilométrage peut donc varier. La meilleure solution est probablement de passer à un autre type d'adaptateur, tel que ArrayAdapter
, ou créer un nouveau SimpleAdapter
chaque fois que vous modifiez l'ensemble de données.