Aller au contenu

Connecter l'interface utilisateur aux données

Maintenant que vous avez créé la méthode pour remplir la base de données avec l'ensemble initial de mots, l'étape suivante consiste à ajouter le code pour afficher ces mots dans le RecyclerView.

Pour afficher le contenu actuel de la base de données, ajoutez un observateur qui observe les LiveData dans le ViewModel.

Chaque fois que les données changent, la méthode de rappel onChanged() est invoquée. Cette méthode appelle la méthode setWords() de l'adaptateur pour mettre à jour les données mises en cache de l'adaptateur et rafraîchir la liste affichée.

  1. Dans MainActivity, créez une variable membre pour le ViewModel :

    MainActivity.java
    private WordViewModel mWordViewModel;
    

Utilisez ViewModelProvider pour associer votre ViewModel à votre activité.

Lorsque votre activité est lancée pour la première fois, ViewModelProvider crée le ViewModel. Lorsque l'activité est détruite, par exemple lors d'un changement de configuration, le ViewModel persiste. Lorsque l'activité est recréée, ViewModelProvider renvoie le ViewModel existant. Pour plus d'informations, consultez ViewModel.

  1. Dans onCreate(), sous le bloc de code RecyclerView, obtenez un ViewModel à partir du ViewModelProvider :

    MainActivity.java
    mWordViewModel = new ViewModelProvider(this).get(WordViewModel.class);
    
  2. Également dans onCreate(), ajoutez un observateur pour le LiveData retourné par getAllWords(). La méthode onChanged() est déclenchée lorsque les données observées changent et que l'activité est au premier plan :

    MainActivity.java
    1
    2
    3
    4
    mWordViewModel.getAllWords().observe(this, words -> {
        // Mettre à jour la copie en cache des mots dans l'adaptateur.
        mAdapter.setWords(words);
    });
    
  3. Exécutez l'application. L'ensemble initial de mots "Hello" et "World" apparaît dans le RecyclerView.

App with words