Compte Rendu
TP 3 Android
Gestion des absences
(suite)
Réalisé par : Kouch Hajar
Ce travail est une application Android permettant de gérer une liste
d’étudiants en fonction de leur statut (Absent ou Présent). Chaque étudiant
peut être ajouté avec une image sélectionnée depuis la galerie. L’application
permet également d’afficher les détails d’un étudiant.
L’interface est comme suit :
Si on essaye d’ajouter un nouveau étudiant on obtient :
Gestion de l’image de profil :
[Link] :
[Link] :
Quand l’utilisateur clique sur le bouton “Choisir une image”, on appelle
openImageChooser(), qui permet à l’utilisateur de sélectionner une image.
onActivityResult() récupère l’image sélectionnée.
L’URI de l’image est récupérée et affichée dans un ImageView.
Elle est stockée dans “selectedImageUri” pour être utilisée plus tard.
Transmission de l’image depuis HomeActivity jusqu’à l’item étudiant et détails :
✔ L’image est transmise sous forme de [Link]() depuis HomeActivity.
✔ Elle est stockée dans l’objet Student et utilisée pour l’affichage dans
StudentAdapter.
✔ En cliquant sur un étudiant, DetailActivity récupère l’image et l’affiche.
1. Le clic sur le bouton Absent permet de modifier l’état de l’étudiant de
Présent à Absent :
Avec une alerte personnalisée (Toast) avec chaque click sur le bouton
Dans “’[Link]” , on gère le clic sur le bouton d’état par le code :
Explication du code :
Si l’étudiant est Absent, on affiche Présent, et inversement.
On affiche un Toast pour informer l’utilisateur du changement.
notifyDataSetChanged() est appelé pour rafraîchir l’affichage.
2. Le clic sur le bouton Présent permet de modifier l’état de l’étudiant de
Absent à Présent :
Avec une alerte personnalisée (Toast) avec chaque click sur le bouton
3. Le clic sur le bouton Détail permet d’afficher dans une nouvelle activité les
détails de l’étudiant sélectionné :
Lorsqu'on clique sur btnDetails, une nouvelle activité ([Link]) s’ouvre avec les
informations de l’étudiant.
[Link] :
Explication du code :
Intent permet de passer d’une activité à une autre.
On transmet trois informations dans l’intent : nom de l’étudiant, statut de
l’étudiant, et URI de l’image.
[Link] :
Explication du code :
On récupère l’image transmise dans l’intent, si l’image est valide on
l’affiche sinon, on affiche l’image par défaut.
De meme , le clic sur le bouton Présent permet de modifier l’état de
l’étudiant de Absent à Présent et vis versa
Le click sur le bouton ‘Liste des étudiants’ , réaffiche la page précédente qui
affiche l’ensemble des étudiants
*DEVOIR*
[Link] le même TP avec le RecycleView :
RecyclerView est un ViewGroup ajouté à Android Studio en tant que
successeur de GridView et ListView.
Il a été conçu pour permettre la création de listes avec des mises en page
XML personnalisables tout en optimisant les performances des ListView et
GridView. Cette optimisation est réalisée grâce au recyclage des vues qui ne
sont plus visibles à l’écran.
Par exemple, si un utilisateur fait défiler la liste jusqu'à ce que les éléments 4
et 5 soient visibles, les éléments 1, 2 et 3 sont libérés de la mémoire afin de
réduire la consommation de ressources.
Modifications à apporter :
1- Remplace le ListView par un RecyclerView dans “activity_home.xml” :
2- Configuration du RecyclerView dans “[Link]” :
Ajout d'un [Link] et d'un LayoutManager
(LinearLayoutManager).
Mise à jour des données : on utilise notifyDataSetChanged() pour
informer RecyclerView des modifications.
3- Transformation de StudentAdapter en [Link] :
Au lieu d'utiliser ArrayAdapter, nous avons créé un [Link]
personnalisé :
Héritage de [Link]<[Link]>.
Création d'une ViewHolder interne pour améliorer la gestion des vues.
Mise en place des méthodes essentielles :
onCreateViewHolder() : Gonfle le layout item_student.xml.
onBindViewHolder() : Associe les données aux vues.
getItemCount() : Retourne la taille de la liste des étudiants.
Conclusion :
Avantages de RecyclerView :
- Performance optimisée (moins d'appels findViewById)
- Meilleure gestion des mises à jour (notifyItemInserted, notifyItemRemoved)
- Grande flexibilité (peut gérer des GridLayoutManager, etc.)