SQLite
 sql >> Base de données >  >> RDS >> SQLite

Supprimer la requête et l'actualisation dans ListView dans Android (sqlite)

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.