Je sais que cela RecyclerView
a remplacé la fonctionnalité de l'ancien ListView
et GridView
. Je cherche un exemple très basique qui montre une configuration de grille minimale à l'aide RecyclerView
. Je ne cherche pas de longues explications de style tutoriel, juste un exemple minimal. J'imagine que la grille la plus simple qui imite l'ancienne GridView comprendrait les fonctionnalités suivantes:
- plusieurs cellules par ligne
- vue unique dans chaque cellule
- répond aux événements de clic
Réponses:
Réponse courte
Pour ceux qui sont déjà familiarisés avec la création d'un
RecyclerView
pour faire une liste , la bonne nouvelle est que la création d'une grille est en grande partie la même. Vous utilisez simplement unGridLayoutManager
au lieu d'unLinearLayoutManager
lorsque vous configurez laRecyclerView
configuration.Si vous avez besoin de plus d'aide que cela, consultez l'exemple suivant.
Exemple complet
Ce qui suit est un exemple minimal qui ressemblera à l'image ci-dessous.
Commencez par une activité vide. Vous allez effectuer les tâches suivantes pour ajouter la
RecyclerView
grille. Il vous suffit de copier et coller le code dans chaque section. Plus tard, vous pouvez le personnaliser en fonction de vos besoins.Mettre à jour les dépendances Gradle
Assurez-vous que les dépendances suivantes figurent dans votre
gradle.build
fichier d' application :Vous pouvez mettre à jour les numéros de version vers la version la plus récente .
Créer une disposition d'activité
Ajoutez le
RecyclerView
à votre mise en page XML.activity_main.xml
Créer une disposition de cellule de grille
Chaque cellule de notre
RecyclerView
grille n'en aura qu'une seuleTextView
. Créez un nouveau fichier de ressources de mise en page.recyclerview_item.xml
Créer l'adaptateur
Il a
RecyclerView
besoin d'un adaptateur pour remplir les vues de chaque cellule avec vos données. Créez un nouveau fichier java.MyRecyclerViewAdapter.java
Remarques
GridView
et c'est un besoin commun. Vous pouvez supprimer ce code si vous n'en avez pas besoin.Initialiser RecyclerView en activité
Ajoutez le code suivant à votre activité principale.
MainActivity.java
Remarques
ItemClickListener
que nous avons définie dans notre adaptateur. Cela nous permet de gérer les événements de clic de cellule dansonItemClick
.Fini
C'est tout. Vous devriez pouvoir exécuter votre projet maintenant et obtenir quelque chose de similaire à l'image en haut.
Continuant
Coins arrondis
Colonnes à ajustement automatique
Une étude plus approfondie
la source
recyclerView.setLayoutManager(new GridLayoutManager(this, numberOfColumns));
Bien que j'aime et apprécie la réponse de Suragch , je voudrais laisser une note parce que j'ai trouvé que le codage de Adapter (
MyRecyclerViewAdapter
) pour définir et exposer la méthode ListeneronItemClick
n'est pas la meilleure façon de le faire, car je n'utilise pas l'encapsulation de classe correctement. Donc, ma suggestion est de laisser l' adaptateur gérer uniquement les opérations d'écoute (c'est son but!) Et de les séparer de l'activité qui utilise l' adaptateur (MainActivity
). Voici donc comment je définirais la classe Adapter:MyRecyclerViewAdapter.java
Veuillez noter que la
onItemClick
méthode maintenant définieMyRecyclerViewAdapter
est l'endroit où vous souhaitez coder vos tâches pour l'événement / l'action reçue.Il n'y a qu'un petit changement à faire pour achever cette transformation: l' activité n'a plus besoin d'être implémentée
MyRecyclerViewAdapter.ItemClickListener
, car maintenant cela est fait complètement par l' adaptateur . Ce serait alors la dernière modification:MainActivity.java
la source
Activity
. Parce que il écoute de clic peut connaître lesActivity
points de vue et d' autresFragments
,Activities
etc. L'adaptateur ne peut envoyer cliquer sur les événements au niveau supérieur. Il doit avoir l'interfaceItemClickListener
avec autant d'événements, comme peuvent le produire de nombreuses vues d'adaptateur d'événements. Cette solution a été écrite encore plus tôt: stackoverflow.com/a/40563598/2914140 .Vous devez définir votre gestionnaire de présentation de vue de recyclage en mode Gridlayout, pour cela, il vous suffit de modifier votre code lorsque vous souhaitez définir votre RecyclerView LayoutManager:
Remarque: remplacez le nombre de colonnes que vous souhaitez par ### HELP ###
la source