Java pour les développeurs Android

Implémenter son Adapter

TESTEZ LINKEDIN LEARNING GRATUITEMENT ET SANS ENGAGEMENT

Tester maintenant Afficher tous les abonnements
Dans cette vidéo, vous implémenterez la classe Adapter en fonction du projet que vous êtes en train de développer.
08:41

Transcription

Dans cette vidéo, nous allons remplir les méthodes surchargées de la classe Adapter. Commençons par la plus simple : getItemCount. Le but de cette méthode est de retourner le nombre d'éléments qui seront affichés sur notre Recyclerview. Attention, pas le nombre d'éléments qui seront affichés à l'écran mais le nombre total de notre liste, vu que notre liste est scroll up. Pour cela, nous allons avoir besoin de connaitre notre liste. Nous allons donc créer un pointeur vers une ArrayList de Personnes. Ici, le but n'est pas de créer une nouvelle ArrayList, c'est juste de récupérer une ArrayList existante et de travailler avec. Ce sera cette ArrayList que nous souhaiterons afficher donc nous allons créer un constructeur clic droit Generate Constructor qui prend une ArrayList, voilà. On nous a transmis l'ArrayList sur laquelle travailler donc l'ArrayList à afficher. Le nombre d'items que l'on veut afficher, ce sera la taille de notre ArrayList. Voilà pour le nombre d'items à créer. Ce ne sera jamais nous qui appellerons cette méthode, ce sera le RecyclerView qui, au moment de sa gestion d'affichage, appellera cette méthode. Concernant onCreateViewHolder, quand le RecyclerView va vouloir créer une nouvelle ligne... pour rappel, le RecyclerView a besoin de 10 à 20 lignes pour fonctionner, après il réutilise les mêmes, ...à chaque fois qu'il aura besoin d'en créer une nouvelle, il appellera ma méthode onCreateViewHolder Je copie-colle un code provenant des exemples de Google. Sur toute cette partie, que va-t-il se passer ? La seule chose sur laquelle on va intervenir, c'est sur le fichier xml que l'on veut utiliser donc R.Layout pour indiquer les fichiers xml. Nous avons appelé notre fichier xml Ligne_personne donc je vais lui dire, ici, de créer une nouvelle instance de notre ligne. Il stockera cette instance dans la variable View et il va créer un ViewHolder à partir cette View, ce fameux View sur lequel on fait nos findViewById. Il y aura donc un ViewHolder par ligne. Nous avons dit qu'il y a entre 10 et 20 lignes, il y aura donc entre 10 et 20 ViewHolders, notre ViewHolder contenant les pointeurs vers les différents éléments graphiques de notre ligne. Il n'y a rien de plus à faire dans le onCreateViewHolder. Maintenant, si on veut afficher une ligne, ici, il va recevoir une des 10 à 20 lignes et, en fonction de la position, on saura ce qu'il faut mettre dans les TextView. Même chose, ces deux méthodes seront appelées par le RecyclerView. Le RecyclerView, dans son fonctionnement, appelle onCreateViewHolder mais comme nous, nous avons surchargé cette méthode, du coup, au lieu d'appeler le onCreatViewHolder de la class RecyclerView, il appellera notre ViewHolder et c'est dans notre onCreateViewHolder que nous lui passeront la ligne à créer. Même chose pour la ligne à afficher. Ici, c'est dans le onBindViewHolder que nous allons décider comment remplir notre ligne. Pour savoir ce qu'on va mettre dans notre ligne, il suffit de savoir de quelle personne on parle. On va créer un pointeur vers une personne et on va récupérer, en fonction de la position, donc cela représente la position dans notre liste, je n'ai plus qu'à récupérer la personne correspondante. Dans ma liste, je récupère la personne qui a la position du paramètre Position. Maintenant, dans mon ViewHolder, j'ai un pointeur vers mes différents composants graphiques. Je n'ai plus qu'à prendre mon Holder.tv_nom Vu qu'on les a laissé en public, on n'est pas obligé d'utiliser un getter ou un setter .setText, c'est un TextView et je n'ai plus qu'à lui mettre ce que je veux mettre dedans en l'occurence, le nom de la personne .getNom Même chose pour le prénom. Ici l'intérêt est que, comme on travaille, avec une liste de personnes, on n'a pas besoin de savoir si c'est un enseignant ou un élève. Maintenant, pour la section donc pour dire la matière ou la classe on a besoin de l'identifier. On va donc passer par le Instanceof donc si ma PersonneBean est de type EleveBean else if ma PersonneBean est de type EnseignantBean Je vais donc prendre ma section .setText PersonneBean Le fait d'avoir marqué Instanceof EleveBean Android Studio est suffisamment intelligent et bien fait et il va me proposer non pas les classES de PersonneBean mais il sait que c'est un EleveBean donc il me rajoute en plus les méthodes de EleveBean alors que je suis encore sur un pointeur vers une personne. J'ai dont getClasse et, tout seul, il m'a fait le cast nécessaire. Même chose pour l'enseignant, cette fois, je n'ai pas la classe mais la matière, parce qu'il détecte qu'on est dans un morceau de code où PersonneBean est un enseignantBean Voilà, ici je n'ai pas besoin de mettre de retour à la ligne puisque chaque appel onBindViewHolder représente déjà une ligne. Maintenant, si je veux gérer les couleurs, j'ai accès à mes composants graphiques, je peux donc modifier la couleur. Je vais partir sur deux couleurs, une pour la classe Enseignant, une pour la classe Elève. Cette partie-là, nous avons dit qu'elle est appelée à chaque ligne et, en fait, elle est même appelée plus souvent que cela. Explication par l'exemple. Ici, j'ai 1, 2, 3, 4, 5, 6 lignes visibles à l'écran. Je vous ai dit que pour fonctionner le ViewHolder à environ besoin de 10 à 20 lignes, tout simplement il a déjà prévu les 4 ou 5 qui viennent à la suite. Quand je déplace, ici, que va-t-il se passer ? Ma ligne numéro 1 se retrouve ici, il n'en a plus besoin donc il va la recycler et la remettre ici. A chaque fois qu'il a besoin de modifier le contenu d'une ligne, il appellera la méthode onBindViewHolder donc cette méthode sera appelée fréquemment, surtout si je fais un truc du genre ça car il l'aura fait pour toutes les lignes. Revenons à nos couleurs. Je veux gérer deux couleurs. Pour récupérer une couleur, c'est une instruction qui va aller chercher dans le fichier xml des couleurs. Ça reste assez court en termes d'exécution mais ça revient quand même à faire une recherche de couleur. Pour éviter de faire cette instruction à chaque fois, je vais la faire ici. Pourquoi ici et pas dans le constructeur ? Là, c'est un autre concept technique : autant je ne passe qu'une fois dans le constructeur, autant je passe dix fois ici et dans le constructeur, je n'ai pas accès au contexte. Qu'est-ce que le contexte ? C'est ce qu'on a ici, c'est ce qui nous permet d'accéder aux ressources de notre application. Je vais donc créer deux couleurs. Les couleurs sont représentées par des entiers. Pour les récupérer, on va utiliser les couleurs colorPrimaryDark et colorAccent qu'on a déjà utilisées à plusieurs endroits. Je clique ici, j'arrive ici et je vois mes couleurs. Si je veux ajouter des couleurs, il suffit de respecter la syntaxe. Pour appeler cette couleur-là, on va devoir utiliser le ContextCompat.getColor lui donner le contexte et la couleur que l'on souhaite récupérer et il ira nous récupérer la couleur correspondante. Android Studio nous indique par un petit carré la couleur que l'on a récupérée. Il m'a stocké cela à l'intérieur de mon hint. Maintenant, je peux donc utiliser ces deux couleurs comme je veux. Je vais donc modifier la couleur, ici. C'est un enseignant, je vais mettre la couleur enseignant. Même chose pour l'élève, je vais mettre la couleur de l'élève. Je vais appeler la méthode setTextColor de l'attribut TextView et lui transmettre sa nouvelle couleur. Voilà, maintenant, nos couleurs sont opérationnelles. Nous avons terminé de remplir PersonneAdapter mais ce n'est pas encore fini car il va falloir utiliser cette classe. Je vous ai dit que c'est le RecyclerView qui va appeler ses méthodes, il va falloir créer l'adapteur et le transmettre à notre RecylerView pour qu'il puisse appeler ses méthodes.

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 !