Utiliser la classe LiveData¶
Lorsque les données changent, vous souhaitez généralement effectuer une action, telle que l'affichage des données mises à jour dans l'interface utilisateur. Cela signifie que vous devez observer les données afin de pouvoir réagir lorsqu'elles changent.
Selon la façon dont les données sont stockées, cela peut être délicat. L'observation des modifications apportées aux données dans plusieurs composants de votre application peut créer des chemins de dépendance explicites et rigides entre les composants. Cela rend les tests et le débogage difficiles, entre autres.
LiveData, une classe de bibliothèque de cycle de vie pour l'observation des données, résout ce problème. Utilisez une valeur de retour de type LiveData dans la description de votre méthode, et Room générera tout le code nécessaire pour mettre à jour LiveData lorsque la base de données est mise à jour.
LiveData et MutableLiveData
Si vous utilisez LiveData indépendamment de Room, vous devez gérer la mise à jour des données. LiveData n'a pas de méthodes accessibles au public pour mettre à jour les données stockées.
Si vous voulez mettre à jour des données stockées dans LiveData, vous devez utiliser MutableLiveData au lieu de LiveData. La classe MutableLiveData possède deux méthodes publiques qui vous permettent de définir la valeur d'un objet LiveData, setValue(T) et postValue(T). Habituellement, MutableLiveData est utilisé dans le ViewModel, et le ViewModel n'expose ensuite que des objets LiveData immuables aux observateurs.
4.1 Retourner LiveData dans WordDao¶
Dans WordDao, modifiez la signature de la méthode getAlphabetizedWords() afin que la List<Word> renvoyée soit encapsulée avec LiveData :
| data/db/WordDao.java | |
|---|---|
Maintenant, chaque fois que les données de la table word_table changent, les observateurs de l'objet LiveData seront notifiés et les données mises à jour leur seront envoyées.
Plus tard dans ce codelab, vous suivez les changements de données via un observateur (observer) dans MainActivity.
Ressources complémentaires
Consultez la documentation de LiveData pour en savoir plus sur d'autres façons d'utiliser LiveData, ou regardez cette vidéo Architecture Components: LiveData and Lifecycle.