Java pour les développeurs Android

S'étendre avec la classe Adapter

TESTEZ LINKEDIN LEARNING GRATUITEMENT ET SANS ENGAGEMENT

Tester maintenant Afficher tous les abonnements
Le RecyclerView travaille avec un outil appelé Adapter et dont il faut hériter. Votre formateur vous en détaille le fonctionnement.
06:35

Transcription

Dans cette vidéo, je vais vous montrer comment utiliser la classe Adapter proposée par le Sdk d'Android. Qu'est-ce qu'un Adapter ? Il va nous permettre de faire la liaison entre notre composant graphique Recyclerview, notre Arraylist de personnes et notre interface graphique, notre fichier Ligne Personne. Commençons par créer cette classe. Cette classe va être considérée comme de l'affichage. Je vais donc créer un package Design pattern Modèle-vue-contrôleur, clic droit, New, Javaclass, l'Adapter va gérer une liste de personnes, je l'appelle donc : « PersonneAdapter ». Voilà, j'ai créé ma classe. Maintenant, je vais créer une InnerClass. Qu'est-ce qu'une InnerClass ? C'est une classe écrite à l'intérieur une autre classe. Ma classe PersonneAdapter commence ici et se termine ici. Et à l'intérieur, je vais créer une classe ViewHolder. « public class view holder ». Le terme ViewHolder, ce n'est pas moi qui l'ai choisi, dans les explications du Recyclerview proposées par Google, c'est le terme utilisé. Nous allons étendre du ViewHolder déjà créé du Sdk d'Android. Il me le propose, Entrée, voilà. J'ai donc créé une classe qui contient une InnerClass. Ici, nous allons utiliser le ViewHolder d'Android. Nous allons l'étendre, donc utiliser toutes ces fonctionnalités. J'ai une erreur, si je laisse le curseur dessus, il m'explique que la classe ViewHolder possède un constructeur avec paramètres et que ma classe doit appeler ce constructeur. Je vais donc cliquer sur l'erreur et faire un Alt+Entrée. Là, il me propose de créer le constructeur qui va bien. Voilà, j'ai mon constructeur. L'intérêt de la classe ViewHolder, il faut imaginer que c'est un Bean qui représente notre interface graphique de notre ligne. C'est-à-dire que notre classe élève possède un nom et un prénom. Un pointeur vers un nom, un pointeur vers un prénom, des getters et des setters. Notre classe ViewHolder va faire la même chose, mais par rapport à une interface graphique. C'est-à-dire, je vais ouvrir mon fichier, je vais avoir un pointeur vers le TextView du nom, un pointeur vers le TextView du prénom, un pointeur vers le TextView de la section. Je vais donc créer trois attributs, un pour chaque composant graphique, et dans le constructeur, je vais faire les FindView, comme on a fait dans main.activity. Sauf que, au lieu de faire FindView sans rien, qui ici n'existe pas, car FindViewById est une méthode de la classe Activity, je vais faire un FindViewById sur une vue. Donc, sur un composant graphique, celui qui m'est transmis en paramètre. Ce composant graphique transmis en paramètre sera le composant racine de notre application. À savoir notre premier LinearLayout. Je vais le dupliquer pour chacune des lignes. Voilà, j'ai récupéré tous mes composants. Cette classe ViewHolder n'a pas vocation à être utilisée hors de PersonneAdapter. Donc ici, je vais la mettre en « protected ». Je ne vais pas mettre mes attributs de mon TextView en « private », pour la simple et bonne raison que la classe ViewHolder n'a pas vocation à être utilisée à l'extérieur du fichier PersonneAdapter. Créer des accesseurs, c'est-à-dire des getters ou des setters, alors que l'on reste dans le même fichier n'apporte aucun intérêt. Maintenant que la classe ViewHolder a été créée, je vais pouvoir faire en sorte que ma classe PersonneAdapter étende l'adapter sur Sdk d'Android. « extends Adapter ». Là, il me propose l'Adapter avec « ». Le VH, pour ViewHolder, je vais le sélectionner. Là, il m'a écrit Recycleview.adapter. Pourquoi RecycleView.viewholder, RecycleView.adapter ? Tout simplement parce que c'est des « InnerClass ». Ça veut dire que si je vais sur ViewHolder ici, j'ai une classe déclarée Abstract, à l'intérieur d'une autre classe : RecycleView. Cette classe, RecycleView.adapter attend un typage. Le typage qu'elle attend, c'est quel ViewHolder vous comptez utiliser. Celui qu'on compte utiliser, c'est celui qu'on vient de créer. Si je mets juste ViewHolder, il y a une ambiguïté, est-ce que je veux utiliser celui que je viens de créer ou celui dont j'hérite, il va falloir préciser. je clique dessus, Alt+Entrée, Import Class et je vais devoir choisir. Nous, celui qu'on veut utiliser, c'est celui qu'on vient de créer, celui qui est dans PersonneAdapter. Et là, il a rajouté « PersonneAdapter. » pour préciser qu'on veut le ViewHolder qui est dans PersonneAdapter, qui est donc une classe interne. Nous avons toujours une erreur. Tout simplement car la classe RecyclerView est abstraite. C'est-à-dire que, pour l'utiliser, il faut implémenter toutes les méthodes Abstract. Même chose, Alt+Entrée, je clique sur l'erreur, Alt+Entrée, « Implement methods », il me propose toutes les méthodes qui sont Abstract, je dis OK et il m'a écrit les trois méthodes Abstract à remplir. Que représentent toutes ces méthodes ? Elles seront appelées par le Recyclerview. Ce dernier va appeler ces trois méthodes. Pour savoir combien d'« item » il faudra qu'il mette dans son Recyclerview, il appellera la méthode getItemCount. Pour créer une nouvelle ligne, il appellera onCreateViewHolder, juste la création de la ligne. Dans onBindViewHolder, à chaque fois qu'il devra afficher une ligne. Pourquoi le Recyclerview est beaucoup plus optimisé que notre TextView ? Tout simplement parce qu'il va créer entre 10 et 20 lignes, même si vous avez 10 000 personnes. Qu'est-ce qu'il va faire ? Une fois qu'il aura ces 10, 20 lignes de créées, il réutilisera les mêmes et la seule chose qu'il va faire, c'est simplement modifier le contenu du TextView. En fait, il va y avoir 10 lignes et au fur et à mesure qu'on va scroller, il va réutiliser une ligne déjà existante, il ne va pas recréer d'espace mémoire pour créer toute la ligne, il va se contenter de changer la valeur qu'il y a dans le Textview. Voilà pour la création et le fonctionnement de la classe Adapter du Recyclerview. Nous verrons comment le remplir dans une prochaine séquence.

Java pour les développeurs Android

Prenez en main la syntaxe et les concepts de Java pour vos développements d’applications pour Android. Abordez les variables, les chaînes de caractères, les conditions, etc.

7h01 (65 vidéos)
Aucun commentaire n´est disponible actuellement
 
Logiciel :
Spécial abonnés
Date de parution :24 avr. 2017

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !