Tâche 6 : Supprimer des mots de la base de données¶
Pour implémenter la fonctionnalité de suppression, vous devez :
- Implémenter la méthode
delete()dansWordListOpenHelper - Ajouter un gestionnaire de clic au bouton
DELETEdansWordListAdapter
1. Écrire la méthode delete()¶
Vous utilisez la méthode delete() sur SQLiteDatabase pour supprimer une entrée dans la base de données. Ajoutez une méthode delete à WordListOpenHelper qui :
-
Créez le stub de méthode pour
delete(), qui prend un argumentintpour l'idde l'élément à supprimer et renvoie le nombre de lignes supprimées. -
Déclarez une variable pour contenir le résultat.
-
Comme pour l'insertion, ajoutez un bloc
try. -
Obtenir une base de données accessible en écriture, si nécessaire.
-
Appeler delete sur
WORD_LIST_TABLE, en sélectionnant parKEY_IDet en passant la valeur de l'idcomme argument. Le "?" est un espace réservé qui est rempli avec la chaîne. C'est une manière plus sûre de construire des requêtes. -
Afficher un message de journal pour les exceptions.
-
Renvoyer le nombre de lignes supprimées.
Solution O_O
2. Ajouter un gestionnaire de clics au bouton `DELETE¶
Vous pouvez maintenant ajouter un gestionnaire de clics au bouton DELETE qui appelle la méthode delete() que vous venez d'écrire.
Jetez un œil à la classe MyButtonOnClickListener dans votre code de démarrage. La classe MyButtonOnClickListener implémente un écouteur de clics qui stocke l'identifiant et le mot dont vous avez besoin pour apporter des modifications à la base de données.
Chaque élément de vue, lorsqu'il est attaché (lié) à la vue RecyclerView dans la méthode onBindViewHolder de WordListAdapter, doit également attacher un écouteur de clic au bouton DELETE, en transmettant l'ID et le mot au constructeur MyButtonOnClickListener. Ces valeurs sont ensuite utilisées par le gestionnaire onClick pour supprimer l'élément concerné et notifier l'adaptateur de la suppression.
Notez que l'argument position passé à onBindViewHolder ne peut pas être utilisé, car il risque d'être obsolète au moment de l'appel du gestionnaire de clic. Vous devez conserver une référence à l'élément de vue et récupérer sa position avec getBindingAdapterPosition().
Solution O_O
Félicitations !
Vous avez complété la tâche 6. Vous avez implémenté la méthode delete() dans WordListOpenHelper et ajouté un gestionnaire de clic au bouton DELETE dans WordListAdapter.
N'oubliez pas de committer sur la branche tp-sqlite de votre dépot git local.