Java pour les développeurs Android

Réutiliser son code

TESTEZ LINKEDIN LEARNING GRATUITEMENT ET SANS ENGAGEMENT

Tester maintenant Afficher tous les abonnements
Votre formateur vous explique comment réaliser une RecyclerView rapidement à partir d'un code déjà existant.
09:45

Transcription

Dans cette vidéo, nous allons apprendre à réutiliser du code existant, et à l'adapter à notre projet rapidement. Pour cela, nous allons prendre l'exemple du RecyclerView. Nous allons réutiliser l'Adapter et le RecyclerView déjà implémentés dans notre autre projet pour l'importer dans ce projet. Alors dans mon autre projet, je vais récupérer la classe Adapter, PersonneAdapter, et je vais la copier dans mon projet. Je vais donc l'appeler ici, FieldAdapter, vu qu'on n'affiche plus les mêmes données. J'ai bien mon constructeur et mon nom qui a été modifié. Ici, je me retrouve avec tout un tas d'erreurs, normal, il va falloir adapter. Commençons en lisant de haut en bas. Première erreur ici, il veut le ViewHolder de PersonneAdpater, or, nous venons de renommer la classe en FieldAdapter. Nous utilisons le ViewHolder de FieldAdapter. Dans notre Adapter, nous avons une ArrayList qui ne pointe plus vers une ArrayList de Personne mais vers une ArrayList de Fields. Attention à bien sélectionner le bon Fields, donc celui qui correspond au package de notre projet. Il existe des classes Field dans la librairie de Java, et dans le SDK d'Android, donc bien prendre celui de notre projet. Je vais renommer la variable Personne, en faisant un clic droit, Refractor Rename... et je vais la renommer Fields. Le fait de passer par le Refractor permet de renommer toutes les occurrences de la variable, mais il va également chercher son utilisation dans les autres classes et dans les fichiers XML. Ici, il me propose même de changer le nom du paramètre du constructeur et du setter qui possédait le même nom. Et voilà. Donc là, nous avons le nom qui a été renommé. Même chose, nous ne somme plus une ArrayList de Personne, mais une ArryList de Fields. Notre interface, nous l'avons appelée OnPersonneListener, de la même manière, nous allons la renommer en conséquence. Refractor Rename... et cette fois, OnFieldsListener. Même chose, il détecte que certains paramètres représentent le même nom que la classe, donc certains paramètres ou certaines variables, et il me propose, ben si je veux, les changer également, donc je fais OK. Même chose ici, là il me propose ici, il me dit qu'il a vu à un endroit l'utilisation, est-ce que je veux le changer ? Je lui dis que je suis d'accord, et donc là par exemple, le nom de ma variable qui était OnPersonneListener, s'est automatiquement changé en OnFieldsListener. Cela ne fonctionne que si la variable a le même nom que la classe. Donc en gros, quand vous créez une variable, si vous utilisez les variables qu'il vous propose, par exemple si je fais, je vais faire avec Record, ici, si j'appuie sur Ctrl+Espace, il me propose des noms de variables, Record, donc si je commence à écrire Record, voilà. Là, j'ai utilisé un nom de variable correspondant au nom de la classe. Donc si je renomme la classe, il me proposera de renommer la variable. Par contre, si j'appelle ma variable Toto, il ne se passera rien. On continue. Arrays, Fields, OnFieldsListener, jusqu'ici nou sommes bons. onCreateViewHolder, donc créer des éléments. Ici, nous n'avons plus besoin des couleurs, on l'enlève. Là, nous avons un problème avec notre R. L'import du R qui est utilisé dans cette classe est celui du R de l'autre projet, je vais donc aller dans les imports, et ici, je vois que j'ai tout un tas de lignes en erreur, qui sont justement les imports représentant les packages de mon autre projet. Donc je vais me contenter de les supprimer, et lui, va automatiquement me réimporter la bonne classe R. On continue. Ici mon Layout, le Layout représentant ma ligne, je vais lui donner le Layout de notre projet. Même chose qu'ici, j'utilise le ViewHolder de la classe FieldAdapter et non celle de la classe PersonneAdapter, on continue. onBindViewHolder. onBind ViewHolder, pour pouvoir le réaliser, il faut avoir fait le ViewHolder, donc on va descendre un peu plus bas, et on va aller dans la classe ViewHolder. Notre classe ViewHolder pour rappel, c'est celle qui représente des pointeurs vers tous les composants graphiques de mon interface graphique, je vais donc retourner dans mon interface graphique qui représente une ligne, et au moment où j'avais réalisé cette interface graphique, je n'avais pas mis d'ID à mes TextView, je vais donc leur donner un ID. tv_titre, tv_description. Voilà, donc maintenant, nous allons créer deux pointeurs vers ces deux variables. Donc tv_titre, tv_description. Nous avions mis un ID root sur le composant principal pour pouvoir intercepter les clics sur une ligne, donc je vais faire de même. Donc, à notre LinearLayout, je vais lui appliquer l'ID root, pourquoi je l'applique en LinearLayout et non au CardView, car c'est ici le CardView qui est le composant principal, la différence entre intercepter les clics sur le LinearLayout et sur le CardView, c'est que le CardView va prendre en compte toute la partie autour de notre ligne. C'est-à-dire toute cette zone ici, alors que le LineayLayout ne prendra que l'intérieur. Cela n'apporte pas une grande différence. Alors petit rappel, si j'applique un background à mon LinearLayout, selectItemBackground, cela permet que, au moment où je clique sur ma cellule, j'ai une petite animation qui me montre que j'ai cliqué dessus. Maintenant nous pouvons revenir à notre ViewHolder, nous récupérons les instances des composants graphiques. Notre interface de communication pour notre callback ne va plus retourner une personne mais un field. Je vais donc également renommer la variable. Et il nous reste le onBindViewHolder, ici, nous récupérons un Fields. Ici je ne vais pas mettre de s, pour différencier le fields qui représente ma liste du field d'une unité. Alors, je n'ai plus qu'à remplir mes deux TextView, tv_titre.setText, donc dans mon unité j'ai .get, c'est le nom de la manifestation. Et ma description. Ici, on va mettre la description courte. Et tout le reste, ici, on n'en a pas besoin. Rediriger les clics, donc on s'abonne aux clics sur un événement, et quand le clic se produit, on transmet le field concerné. Ici, je vous ai montré comment réutiliser rapidement mon FieldAdapter, et comment l'adapter à mon nouveau typage. Réalisons son intégration dans MainActivity. Nous avons donc nos trois composants, nous avons récupéré ces informations. Notre Recycle view, il faut lui donner un LayoutManager, new LinearLayoutManager, de (this) pour le contexte. Nous allons créer une instance de nos données, à savoir une ArrayList de Fields, cette ArrayList, je vais la créer, elle sera vide pour le moment. Je vais créer mon Adapter. Je lui transmets ma liste, et je m'abonne à son callback. Même chose, je me positionne dessus, Alt+Entrée, et faire en sorte que MainActivity s'abonne à son callback, et on a donc bien la méthode OnClick qui nous renvoie le Field sur lequel on a cliqué. Il nous reste à transmettre notre Adapter à notre Recycle view, et à créer une donnée, donc au moment où je clique, je vais créer un Field, je vais lui donner une description, testD, et un nom. Je l'ajoute à ma liste, et là, petit problème, ils ont le même nom. C'est l'occasion de revoir le mot-clé this, qui me permet de différencier l'attribut de ma variable Field. Donc ici, le fait d'avoir mis this. je tape sur l'attribut. Donc ma variable devient violette, .add(), et cette fois, j'ajoute ma variable fields qui, elle, est blanche, car elle est en variable uniquement dans la méthode. Je préviens mon Adapter que mes données ont changé, et je peux tester. Et voilà, nous avons pu adapter notre Adapter à notre projet.

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 !