Aller au contenu

Créer un adaptateur et ajouter le RecyclerView

Vous allez afficher les données dans un RecyclerView. Ce codelab suppose que vous savez comment fonctionnent RecyclerView, RecyclerView.ViewHolder et RecyclerView.Adapter.

9.1 Créer la classe WordListAdapter

  1. Créez un nouveau package adapter sous com.example.enetcom.roomwordsample.
  2. Créez une classe WordListAdapter qui étend RecyclerView.Adapter sous le package adapter. Voici le code :
adapter/WordListAdapter.java
public class WordListAdapter extends RecyclerView.Adapter<WordListAdapter.WordViewHolder> {

 private List<Word> mWords; // Copie en cache des mots

 public WordListAdapter() {}

 @NonNull
 @Override
 public WordViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
     View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.recyclerview_item, parent, false);
     return new WordViewHolder(itemView);
 }

 @Override
 public void onBindViewHolder(@NonNull WordViewHolder holder, int position) {
     if (mWords != null) {
         Word current = mWords.get(position);
         holder.wordItemView.setText(current.getWord());
     } else {
         // Couvre le cas où les données ne sont pas encore prêtes.
         holder.wordItemView.setText("No Word");
     }
 }

 public void setWords(List<Word> words){
     mWords = words;
     notifyDataSetChanged();
 }

 // getItemCount() est appelé plusieurs fois, et lorsqu'il est appelé pour la première fois,
 // mWords n'a pas été mis à jour (cela signifie qu'initialement, il est nul, et nous ne pouvons pas retourner nul).
 @Override
 public int getItemCount() {
     if (mWords != null)
         return mWords.size();
     else return 0;
 }

 class WordViewHolder extends RecyclerView.ViewHolder {
     private final TextView wordItemView;

     private WordViewHolder(View itemView) {
         super(itemView);
         wordItemView = itemView.findViewById(R.id.textView);
     }
 }
}

9.2 Ajouter RecyclerView à l'activité principale

  1. Allez dans activity_main.xml et localisez la balise include, puis ajoutez-lui content_main comme un ID :

    layout/activity_main.xml
    <include layout="@layout/content_main" android:id="@+id/content_main" />
    
  2. Ajoutez le RecyclerView dans la méthode onCreate() de MainActivity (après l'appel vers setContentView(binding.getRoot());) :

    MainActivity.java
    1
    2
    3
    WordListAdapter mAdapter = new WordListAdapter();
    binding.contentMain.recyclerview.setAdapter(mAdapter);
    binding.contentMain.recyclerview.setHasFixedSize(true);
    
  3. Exécutez votre application pour vous assurer que tout fonctionne. Il n'y a pas d'éléments car vous n'avez pas encore connecté les données.

Empty RecyclerView