SlideShare une entreprise Scribd logo
1  sur  31
Télécharger pour lire hors ligne
Université Constantine 2
Dr. CHAOUCHE A.-C.
Faculté des nouvelles technologies
ahmed.chaouche@univ-constantine2.dz
– Cours 10 –
Chapitre 7 : Vues à adaptateurs et boites de dialogue (1/2)
Vues à adaptateur
Développement d’applications mobiles
2018/2019. Semestre 1
Université Constantine 2
Etudiants concernés
Faculté/Institut Département Niveau Spécialité
2018/2019. Semestre 1
Dr. CHAOUCHE A.-C.
Faculté des nouvelles technologies
ahmed.chaouche@univ-constantine2.dz
Développement d’applications mobiles
Licence 3 Technologies de l’information (TI)Nouvelles technologies IFA
Licence 3 Science de l’informatique (SCI)Nouvelles technologies IFA
– Cours 10 –
Chapitre 7 : Vues à adaptateurs et boites de dialogue (1/2)
Vues à adaptateur
Université Constantine 2 3
Prérequis
Gestion des vues et des layouts
Gestion des évènements
Objectifs du cours
Créer et manipuler des vues à adaptateur (ListView, GridView, ...)
Créer des vues à adaptateur personnalisé
Résumé
© Dr. Chaouche A.-C.
Université Constantine 2 4
Vues à adaptateur
© Dr. Chaouche A.-C.
Université Constantine 2 5
Une vue à adaptateur (AdapterView) est une sous-classe de ViewGroup
où ses vues filles sont déterminées par un Adapter qui relie l'objet
AdapterView aux données.
Pour afficher des collections (List, Set, Map, ...)
Héritent de AdapterView :
ListView
Spinner
GridView
AutoCompleteTextView
Gallery
...
Ces vues gèrent leurs données via des adaptateurs
Vues à adaptateurs
© Dr. Chaouche A.-C.
Université Constantine 2 6
Design pattern : Adapter (1/2)
© Dr. Chaouche A.-C.
Université Constantine 2 7
Design pattern : Adapter (2/2)
© Dr. Chaouche A.-C.
Collection
Mercury
Venus
Earth
Mars
Jupiter
Saturn
Uranus
Neptune
Université Constantine 2 8
Spinner et ArrayAdapter
© Dr. Chaouche A.-C.
/java/MainActivity.java
Spinner spinner = (Spinner) findViewById(R.id.spinner);
...
String[] items = {"Mercury", "Venus", "Earth", ... };
ArrayAdapter<String> adapter =
new ArrayAdapter<>(this,
android.R.layout.simple_list_item_1,
items);
spinner.setAdapter(adapter);
...
/res/layout/activity_main.xml
<Spinner
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/spinner"/>
TV
Université Constantine 2 9
Modification de l'activité ModulesActivity
Un GridView pour afficher la liste des modules
Un FloatingActionButton pour mettre à jour la
liste des modules
En cliquant sur chaque élément de la liste
→ Afficher le nom du module dans un Toast
TP3a : Création d’une vue des modules
© Dr. Chaouche A.-C.
Université Constantine 2 10
TP3a : Création d’une vue des modules
© Dr. Chaouche A.-C.
Modification de l'activité ModulesActivity
Un GridView pour afficher la liste des modules
Un FloatingActionButton pour mettre à jour la
liste des modules
En cliquant sur chaque élément de la liste
→ Afficher le nom du module dans un Toast
Université Constantine 2 11
Interagir avec un AdapterView à travers des Listeners
OnItemClickListener
▪ onItemClick(AdapterView<?> parent, View view, int position, long id)
OnItemLongClickListener
▪ onLongClick(AdapterView<?> parent, View view, int position, long id)
OnItemSelectedListener
▪ onItemSelected(AdapterView<?> parent, View view, int position, long id)
▪ onNothingSelected(AdapterView<?> parent)
Listeners d’un AdapterView
© Dr. Chaouche A.-C.
Université Constantine 2 12
Hiérarchie des adaptateurs
© Dr. Chaouche A.-C.
Université Constantine 2 13
Méthodes de mise à jour des adaptateurs
© Dr. Chaouche A.-C.
android.widget.Adapter
void add(T item) // ajouter un élément en fin de l’AdapterView
void insert(T item, int index) // insérer un élément à une position donnée
void addAll(T... items) // insérer plusieurs éléments
T getItem(int index) // récupérer l’élément d’une position donnée
int getPosition(Object o) // récupérer la position d’un élément donné
void remove(T item) // supprimer un élément donnée
void clear() // supprimer tous les éléments
void notifyDataSetChanged() // notifie l’AdapterView des nouveaux
changements pour se rafraîchir
Université Constantine 2 14
Vues à adaptateur personnalisé (1/3)
© Dr. Chaouche A.-C.
Collection
Mercury
Venus
Earth
Mars
Jupiter
Saturn
Uranus
Neptune
Collection
<Country>
country1
country2
country3
country4
country5
...
Université Constantine 2 15
List<Country>
new Country(flagId,"Sweden")
new Country(flagId,"Switz…")
new Country(flagId,"Taiwan")
new Country(flagId,"United…")
new Country(flagId,"United…")
...
Vues à adaptateur personnalisé (2/3)
© Dr. Chaouche A.-C.
position
position
TVIV
Université Constantine 2 16
List<Country>
new Country(flagId,"Sweden")
new Country(flagId,"Switz…")
new Country(flagId,"Taiwan")
new Country(flagId,"United…")
new Country(flagId,"United…")
...
Vues à adaptateur personnalisé (3/3)
© Dr. Chaouche A.-C.
position
position
TVIV
@Override
getView(position, ...){
...
}
Université Constantine 2 17
Vues à adaptateur personnalisé
1. Créer l’entité Country
© Dr. Chaouche A.-C.
/java/Country.java
public class Country {
int flagResourceId;
String name;
...
public Country(int flagResourceId, String name){
this.flagResourceId = flagResourceId;
this.name = name;
}
}
Université Constantine 2 18
Vues à adaptateur personnalisé
2. Créer une vue pour l'item
© Dr. Chaouche A.-C.
/res/layout/item_country.xml
<LinearLayout
xmlns:android="http://schemas.android.com/..."
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:id="@+id/flagIV"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/nameTV"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
TVIV
Université Constantine 2 19
Vues à adaptateur personnalisé
3.a. Créer un adaptateur personnalisé
© Dr. Chaouche A.-C.
List<Country>
(flagId,"Sweden")
(flagId,"Switzerland")
(flagId,"Taiwan")
...
CountryAdapter
Université Constantine 2 20
Vues à adaptateur personnalisé
3.a. Créer un adaptateur personnalisé
© Dr. Chaouche A.-C.
/java/CountryAdapter.java
public class CountryAdapter extends ArrayAdapter<Country> {
Activity activity;
int itemResourceId;
List<Country> items;
...
public CountryAdapter(Activity activity,
int itemResourceId,
List<Country> items) { ... }
@Override
public View getView(int position,
View convertView,
ViewGroup parent) { ... }
}
b
c
a
Université Constantine 2 21
Vues à adaptateur personnalisé
3.b. Implémenter le Constructeur
© Dr. Chaouche A.-C.
/java/CountryAdapter.java
...
Activity activity;
List<Country> items;
int itemResourceId;
public CountryAdapter(Activity activity, int itemResourceId, List<Country> items){
super(activity, itemResourceId, items);
this.activity = activity;
this.itemResourceId = itemResourceId;
this.items = items;
}
...
Université Constantine 2 22
List<Country>
new Country(flagId,"Sweden")
new Country(flagId,"Switz…")
new Country(flagId,"Taiwan")
new Country(flagId,"United…")
new Country(flagId,"United…")
...
Vues à adaptateur personnalisé
3.c. Redéfinir la méthode getView()
© Dr. Chaouche A.-C.
position
position
TVIV
@Override
getView(position, ...){
...
}
Université Constantine 2 23
Vues à adaptateur personnalisé
3.c. Redéfinir la méthode getView()
© Dr. Chaouche A.-C.
/java/CountryAdapter.java
Activity activity;
List<Country> items;
int itemResourceId;
@Override
public View getView(int position, View convertView, ViewGroup parent){
}
Université Constantine 2 24
Vues à adaptateur personnalisé
3.c. Redéfinir la méthode getView()
© Dr. Chaouche A.-C.
/java/CountryAdapter.java
Activity activity;
List<Country> items;
int itemResourceId;
@Override
public View getView(int position, View convertView, ViewGroup parent){
View layout = convertView;
if (convertView == null){
LayoutInflater inflater = activity.getLayoutInflater();
layout = inflater.inflate(itemResourceId, parent, false);
}
}
Obtenir
le layout
TVIV
layout
Université Constantine 2 25
Vues à adaptateur personnalisé
3.c. Redéfinir la méthode getView()
© Dr. Chaouche A.-C.
/java/CountryAdapter.java
Activity activity;
List<Country> items;
int itemResourceId;
@Override
public View getView(int position, View convertView, ViewGroup parent){
View layout = convertView;
if (convertView == null){
LayoutInflater inflater = activity.getLayoutInflater();
layout = inflater.inflate(itemResourceId, parent, false);
}
TextView nameTV = (TextView) layout.findViewById(R.id.nameTV);
ImageView flagIV = (ImageView) layout.findViewById(R.id.flagIV);
}
Obtenir
le layout
Récupérer
les vues
TVIV
nameTVflagIV
Université Constantine 2 26
Vues à adaptateur personnalisé
3.c. Redéfinir la méthode getView()
© Dr. Chaouche A.-C.
/java/CountryAdapter.java
Activity activity;
List<Country> items;
int itemResourceId;
@Override
public View getView(int position, View convertView, ViewGroup parent){
View layout = convertView;
if (convertView == null){
LayoutInflater inflater = activity.getLayoutInflater();
layout = inflater.inflate(itemResourceId, parent, false);
}
TextView nameTV = (TextView) layout.findViewById(R.id.nameTV);
ImageView flagIV = (ImageView) layout.findViewById(R.id.flagIV);
nameTV.setText(items.get(position).name);
flagIV.setImageResource(items.get(position).flagResourceId);
return layout;
}
Obtenir
le layout
Récupérer
les vues
Remplir
les vues
Université Constantine 2 27
Vues à adaptateur personnalisé
4. Associer l'adaptateur au Spinner
© Dr. Chaouche A.-C.
/java/MainActivity.java
Spinner spinner = (Spinner) findViewById(R.id.spinner);
...
List<Country> items = new ArrayList<>();
items.add(new Country(R.drawable.flag_sweden, "Sweden")); ...
CountryAdapter adapter =
new CountryAdapter(MainActivity.this,
R.layout.item_country,
items);
spinner.setAdapter(adapter);
...
/res/layout/activity_main.xml
<Spinner
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/spinner"/>
Université Constantine 2 28
Personnalisation de l'activité ModulesActivity
Améliorer le design de la vue
Création de l’entité Module qui contient les
informations d’un module
Création de la vue de chaque élément item_module
Création de ModuleAdapter dérivant de
ArrayAdapter<Module>
TP3b : Création d’une vue des modules (1/2)
© Dr. Chaouche A.-C.
Université Constantine 2 29
TP3b : Création d’une vue des modules (2/2)
© Dr. Chaouche A.-C.
/java/Module.java
public class Module {
int id;
String accronym;
String name;
String description;
int credit;
...
public Module(int id, ...){
this.id = id;
...
}
}
/res/layout/item_module.xml
/java/ModuleAdapter.java
...
Université Constantine 2 30
AdapterView :
https://developer.android.com/reference/android/widget/AdapterView.html
ListView à adaptateurs personnalisés :
http://www.journaldev.com/10416/android-listview-with-custom-adapter-example-
tutorial
Quelques liens utiles
© Dr. Chaouche A.-C.
Université Constantine 2 31
Android Developer, «Grid View,». Lien : https://developer.android.com/
guide/topics/ui/layout/gridview.html.
Android Developer, «Spinners,». Lien : https://developer.android.com/
guide/topics/ui/controls/spinner.html.
Source making, «Adapter Design Pattern,». Lien :
https://sourcemaking.com/design_patterns/adapter.
Android Developer, «References - Android Plateform API 26 : AdapterView,». Lien :
https://developer.android.com/reference/android/ widget/AdapterView.html.
Android Developer, «References - Android Plateform API 26 : Adapter,». Lien :
developer.android.com/reference/android/widget/Adapter.html.
Android Developer, «References - Android Plateform API 26 : ArrayAdapter,». Lien
: https://developer.android.com/reference/android/ widget/ArrayAdapter.html.
Références
© Dr. Chaouche A.-C.

Contenu connexe

Tendances

Applications Android - cours 12 : Persistance de données SQLite
Applications Android - cours 12 : Persistance de données SQLiteApplications Android - cours 12 : Persistance de données SQLite
Applications Android - cours 12 : Persistance de données SQLiteAhmed-Chawki Chaouche
 
Android-Tp1: éléments graphiques de base et intents
Android-Tp1: éléments graphiques de base et intentsAndroid-Tp1: éléments graphiques de base et intents
Android-Tp1: éléments graphiques de base et intentsLilia Sfaxi
 
Applications Android - cours 13 : Connectivité et services Web
Applications Android - cours 13 : Connectivité et services WebApplications Android - cours 13 : Connectivité et services Web
Applications Android - cours 13 : Connectivité et services WebAhmed-Chawki Chaouche
 
Android-Tp5 : web services
Android-Tp5 : web servicesAndroid-Tp5 : web services
Android-Tp5 : web servicesLilia Sfaxi
 
Android-Tp3: fragments et menus
Android-Tp3: fragments et menusAndroid-Tp3: fragments et menus
Android-Tp3: fragments et menusLilia Sfaxi
 
Android-Tp4: stockage
Android-Tp4: stockageAndroid-Tp4: stockage
Android-Tp4: stockageLilia Sfaxi
 
Concevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootConcevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootDNG Consulting
 
Chp1 - Introduction au Développement Mobile
Chp1 - Introduction au Développement MobileChp1 - Introduction au Développement Mobile
Chp1 - Introduction au Développement MobileLilia Sfaxi
 
Présentation Flutter
Présentation FlutterPrésentation Flutter
Présentation FlutterAppstud
 
P1 introduction à android
P1 introduction à androidP1 introduction à android
P1 introduction à androidLilia Sfaxi
 
Android - Tp3 - intents
Android - Tp3 -  intentsAndroid - Tp3 -  intents
Android - Tp3 - intentsLilia Sfaxi
 
interface graphique mobile.pdf
interface graphique mobile.pdfinterface graphique mobile.pdf
interface graphique mobile.pdfYasmineChihab1
 

Tendances (20)

Applications Android - cours 12 : Persistance de données SQLite
Applications Android - cours 12 : Persistance de données SQLiteApplications Android - cours 12 : Persistance de données SQLite
Applications Android - cours 12 : Persistance de données SQLite
 
Android-Tp1: éléments graphiques de base et intents
Android-Tp1: éléments graphiques de base et intentsAndroid-Tp1: éléments graphiques de base et intents
Android-Tp1: éléments graphiques de base et intents
 
Applications Android - cours 13 : Connectivité et services Web
Applications Android - cours 13 : Connectivité et services WebApplications Android - cours 13 : Connectivité et services Web
Applications Android - cours 13 : Connectivité et services Web
 
Android-Tp5 : web services
Android-Tp5 : web servicesAndroid-Tp5 : web services
Android-Tp5 : web services
 
Android-Tp3: fragments et menus
Android-Tp3: fragments et menusAndroid-Tp3: fragments et menus
Android-Tp3: fragments et menus
 
Support developpement applications mobiles avec ionic v3 et v4
Support developpement applications mobiles avec ionic v3 et v4Support developpement applications mobiles avec ionic v3 et v4
Support developpement applications mobiles avec ionic v3 et v4
 
Android-Tp4: stockage
Android-Tp4: stockageAndroid-Tp4: stockage
Android-Tp4: stockage
 
Cours design pattern m youssfi partie 5 adapter
Cours design pattern m youssfi partie 5 adapterCours design pattern m youssfi partie 5 adapter
Cours design pattern m youssfi partie 5 adapter
 
Concevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootConcevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring Boot
 
Chp1 - Introduction au Développement Mobile
Chp1 - Introduction au Développement MobileChp1 - Introduction au Développement Mobile
Chp1 - Introduction au Développement Mobile
 
Présentation Flutter
Présentation FlutterPrésentation Flutter
Présentation Flutter
 
Cours design pattern m youssfi partie 4 composite
Cours design pattern m youssfi partie 4 compositeCours design pattern m youssfi partie 4 composite
Cours design pattern m youssfi partie 4 composite
 
P1 introduction à android
P1 introduction à androidP1 introduction à android
P1 introduction à android
 
Cours design pattern m youssfi partie 6 proxy
Cours design pattern m youssfi partie 6 proxyCours design pattern m youssfi partie 6 proxy
Cours design pattern m youssfi partie 6 proxy
 
Cours design pattern m youssfi partie 2 observer
Cours design pattern m youssfi partie 2 observerCours design pattern m youssfi partie 2 observer
Cours design pattern m youssfi partie 2 observer
 
Support de cours Spring M.youssfi
Support de cours Spring  M.youssfiSupport de cours Spring  M.youssfi
Support de cours Spring M.youssfi
 
Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)
 
Android - Tp3 - intents
Android - Tp3 -  intentsAndroid - Tp3 -  intents
Android - Tp3 - intents
 
Support de cours entrepise java beans ejb m.youssfi
Support de cours entrepise java beans ejb m.youssfiSupport de cours entrepise java beans ejb m.youssfi
Support de cours entrepise java beans ejb m.youssfi
 
interface graphique mobile.pdf
interface graphique mobile.pdfinterface graphique mobile.pdf
interface graphique mobile.pdf
 

Similaire à Applications Android - cours 10 : Vues à adaptateur

Applications Android - cours 4 : Langage Java
Applications Android - cours 4 : Langage JavaApplications Android - cours 4 : Langage Java
Applications Android - cours 4 : Langage JavaAhmed-Chawki Chaouche
 
Activity
ActivityActivity
Activitydido
 
Introduction au développement Android
Introduction au développement AndroidIntroduction au développement Android
Introduction au développement AndroidSteve Tremblay
 
Applications Android - Cours 2 : OS mobiles
Applications Android - Cours 2 : OS mobilesApplications Android - Cours 2 : OS mobiles
Applications Android - Cours 2 : OS mobilesAhmed-Chawki Chaouche
 
Mise en place de l'ActionBarCompat dans vos projets Android.
Mise en place de l'ActionBarCompat dans vos projets Android.Mise en place de l'ActionBarCompat dans vos projets Android.
Mise en place de l'ActionBarCompat dans vos projets Android.Mathias Seguy
 
In01 - Programmation Android - 03 - HMI
In01 - Programmation Android - 03 - HMIIn01 - Programmation Android - 03 - HMI
In01 - Programmation Android - 03 - HMIYann Caron
 
Alphorm.com Formation React : Les fondamentaux
Alphorm.com Formation React : Les fondamentauxAlphorm.com Formation React : Les fondamentaux
Alphorm.com Formation React : Les fondamentauxAlphorm
 
Applications Android - cours 5 : Classe Object et Collections en Java
Applications Android - cours 5 : Classe Object et Collections en JavaApplications Android - cours 5 : Classe Object et Collections en Java
Applications Android - cours 5 : Classe Object et Collections en JavaAhmed-Chawki Chaouche
 
Cours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyCours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyENSET, Université Hassan II Casablanca
 
Nc univers technologique chap 7
Nc univers technologique chap 7Nc univers technologique chap 7
Nc univers technologique chap 7ameliani
 
GWT : under the hood
GWT : under the hoodGWT : under the hood
GWT : under the hoodsvuillet
 
Cours de C++, en français, 2002 - Cours 2.1
Cours de C++, en français, 2002 - Cours 2.1Cours de C++, en français, 2002 - Cours 2.1
Cours de C++, en français, 2002 - Cours 2.1Laurent BUNIET
 
gestion Comptes Bancaire SpringBoot-Exemple.pdf
gestion Comptes Bancaire SpringBoot-Exemple.pdfgestion Comptes Bancaire SpringBoot-Exemple.pdf
gestion Comptes Bancaire SpringBoot-Exemple.pdfMohamedHassoun11
 

Similaire à Applications Android - cours 10 : Vues à adaptateur (19)

Applications Android - cours 4 : Langage Java
Applications Android - cours 4 : Langage JavaApplications Android - cours 4 : Langage Java
Applications Android - cours 4 : Langage Java
 
Activity
ActivityActivity
Activity
 
Introduction au développement Android
Introduction au développement AndroidIntroduction au développement Android
Introduction au développement Android
 
Applications Android - Cours 2 : OS mobiles
Applications Android - Cours 2 : OS mobilesApplications Android - Cours 2 : OS mobiles
Applications Android - Cours 2 : OS mobiles
 
Mise en place de l'ActionBarCompat dans vos projets Android.
Mise en place de l'ActionBarCompat dans vos projets Android.Mise en place de l'ActionBarCompat dans vos projets Android.
Mise en place de l'ActionBarCompat dans vos projets Android.
 
In01 - Programmation Android - 03 - HMI
In01 - Programmation Android - 03 - HMIIn01 - Programmation Android - 03 - HMI
In01 - Programmation Android - 03 - HMI
 
Mvc (5)
Mvc (5)Mvc (5)
Mvc (5)
 
Les Activités.pdf
Les Activités.pdfLes Activités.pdf
Les Activités.pdf
 
Rapport tp3 j2ee
Rapport tp3 j2eeRapport tp3 j2ee
Rapport tp3 j2ee
 
Alphorm.com Formation React : Les fondamentaux
Alphorm.com Formation React : Les fondamentauxAlphorm.com Formation React : Les fondamentaux
Alphorm.com Formation React : Les fondamentaux
 
Applications Android (Planning)
Applications Android (Planning)Applications Android (Planning)
Applications Android (Planning)
 
vanderpypendaniel_msc
vanderpypendaniel_mscvanderpypendaniel_msc
vanderpypendaniel_msc
 
Applications Android - cours 5 : Classe Object et Collections en Java
Applications Android - cours 5 : Classe Object et Collections en JavaApplications Android - cours 5 : Classe Object et Collections en Java
Applications Android - cours 5 : Classe Object et Collections en Java
 
Cours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyCours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategy
 
Nc univers technologique chap 7
Nc univers technologique chap 7Nc univers technologique chap 7
Nc univers technologique chap 7
 
Android2017 cours2
Android2017 cours2Android2017 cours2
Android2017 cours2
 
GWT : under the hood
GWT : under the hoodGWT : under the hood
GWT : under the hood
 
Cours de C++, en français, 2002 - Cours 2.1
Cours de C++, en français, 2002 - Cours 2.1Cours de C++, en français, 2002 - Cours 2.1
Cours de C++, en français, 2002 - Cours 2.1
 
gestion Comptes Bancaire SpringBoot-Exemple.pdf
gestion Comptes Bancaire SpringBoot-Exemple.pdfgestion Comptes Bancaire SpringBoot-Exemple.pdf
gestion Comptes Bancaire SpringBoot-Exemple.pdf
 

Dernier

Evaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxEvaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxAsmaa105193
 
Guide Final de rédaction de mémoire de fin d'étude
Guide Final de rédaction de mémoire de fin d'étudeGuide Final de rédaction de mémoire de fin d'étude
Guide Final de rédaction de mémoire de fin d'étudeBenamraneMarwa
 
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptxSAID MASHATE
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .Txaruka
 
Formation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipFormation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipM2i Formation
 
Présentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxPrésentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxrababouerdighi
 
7 PPT sue le project de fin d'étude.pptx
7 PPT sue le project de fin d'étude.pptx7 PPT sue le project de fin d'étude.pptx
7 PPT sue le project de fin d'étude.pptxrababouerdighi
 
Saint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxSaint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxMartin M Flynn
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETMedBechir
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETMedBechir
 
Fondation Louis Vuitton. pptx
Fondation      Louis      Vuitton.   pptxFondation      Louis      Vuitton.   pptx
Fondation Louis Vuitton. pptxTxaruka
 
A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.Franck Apolis
 
systeme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertsysteme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertChristianMbip
 

Dernier (15)

Evaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxEvaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. Marocpptx
 
Guide Final de rédaction de mémoire de fin d'étude
Guide Final de rédaction de mémoire de fin d'étudeGuide Final de rédaction de mémoire de fin d'étude
Guide Final de rédaction de mémoire de fin d'étude
 
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
 
Formation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipFormation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadership
 
Présentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxPrésentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptx
 
7 PPT sue le project de fin d'étude.pptx
7 PPT sue le project de fin d'étude.pptx7 PPT sue le project de fin d'étude.pptx
7 PPT sue le project de fin d'étude.pptx
 
Saint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxSaint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptx
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSET
 
Pâques de Sainte Marie-Euphrasie Pelletier
Pâques de Sainte Marie-Euphrasie PelletierPâques de Sainte Marie-Euphrasie Pelletier
Pâques de Sainte Marie-Euphrasie Pelletier
 
Fondation Louis Vuitton. pptx
Fondation      Louis      Vuitton.   pptxFondation      Louis      Vuitton.   pptx
Fondation Louis Vuitton. pptx
 
A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.
 
Evaluación Alumnos de Ecole Victor Hugo
Evaluación Alumnos de Ecole  Victor HugoEvaluación Alumnos de Ecole  Victor Hugo
Evaluación Alumnos de Ecole Victor Hugo
 
systeme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertsysteme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expert
 

Applications Android - cours 10 : Vues à adaptateur

  • 1. Université Constantine 2 Dr. CHAOUCHE A.-C. Faculté des nouvelles technologies ahmed.chaouche@univ-constantine2.dz – Cours 10 – Chapitre 7 : Vues à adaptateurs et boites de dialogue (1/2) Vues à adaptateur Développement d’applications mobiles 2018/2019. Semestre 1
  • 2. Université Constantine 2 Etudiants concernés Faculté/Institut Département Niveau Spécialité 2018/2019. Semestre 1 Dr. CHAOUCHE A.-C. Faculté des nouvelles technologies ahmed.chaouche@univ-constantine2.dz Développement d’applications mobiles Licence 3 Technologies de l’information (TI)Nouvelles technologies IFA Licence 3 Science de l’informatique (SCI)Nouvelles technologies IFA – Cours 10 – Chapitre 7 : Vues à adaptateurs et boites de dialogue (1/2) Vues à adaptateur
  • 3. Université Constantine 2 3 Prérequis Gestion des vues et des layouts Gestion des évènements Objectifs du cours Créer et manipuler des vues à adaptateur (ListView, GridView, ...) Créer des vues à adaptateur personnalisé Résumé © Dr. Chaouche A.-C.
  • 4. Université Constantine 2 4 Vues à adaptateur © Dr. Chaouche A.-C.
  • 5. Université Constantine 2 5 Une vue à adaptateur (AdapterView) est une sous-classe de ViewGroup où ses vues filles sont déterminées par un Adapter qui relie l'objet AdapterView aux données. Pour afficher des collections (List, Set, Map, ...) Héritent de AdapterView : ListView Spinner GridView AutoCompleteTextView Gallery ... Ces vues gèrent leurs données via des adaptateurs Vues à adaptateurs © Dr. Chaouche A.-C.
  • 6. Université Constantine 2 6 Design pattern : Adapter (1/2) © Dr. Chaouche A.-C.
  • 7. Université Constantine 2 7 Design pattern : Adapter (2/2) © Dr. Chaouche A.-C. Collection Mercury Venus Earth Mars Jupiter Saturn Uranus Neptune
  • 8. Université Constantine 2 8 Spinner et ArrayAdapter © Dr. Chaouche A.-C. /java/MainActivity.java Spinner spinner = (Spinner) findViewById(R.id.spinner); ... String[] items = {"Mercury", "Venus", "Earth", ... }; ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, items); spinner.setAdapter(adapter); ... /res/layout/activity_main.xml <Spinner android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/spinner"/> TV
  • 9. Université Constantine 2 9 Modification de l'activité ModulesActivity Un GridView pour afficher la liste des modules Un FloatingActionButton pour mettre à jour la liste des modules En cliquant sur chaque élément de la liste → Afficher le nom du module dans un Toast TP3a : Création d’une vue des modules © Dr. Chaouche A.-C.
  • 10. Université Constantine 2 10 TP3a : Création d’une vue des modules © Dr. Chaouche A.-C. Modification de l'activité ModulesActivity Un GridView pour afficher la liste des modules Un FloatingActionButton pour mettre à jour la liste des modules En cliquant sur chaque élément de la liste → Afficher le nom du module dans un Toast
  • 11. Université Constantine 2 11 Interagir avec un AdapterView à travers des Listeners OnItemClickListener ▪ onItemClick(AdapterView<?> parent, View view, int position, long id) OnItemLongClickListener ▪ onLongClick(AdapterView<?> parent, View view, int position, long id) OnItemSelectedListener ▪ onItemSelected(AdapterView<?> parent, View view, int position, long id) ▪ onNothingSelected(AdapterView<?> parent) Listeners d’un AdapterView © Dr. Chaouche A.-C.
  • 12. Université Constantine 2 12 Hiérarchie des adaptateurs © Dr. Chaouche A.-C.
  • 13. Université Constantine 2 13 Méthodes de mise à jour des adaptateurs © Dr. Chaouche A.-C. android.widget.Adapter void add(T item) // ajouter un élément en fin de l’AdapterView void insert(T item, int index) // insérer un élément à une position donnée void addAll(T... items) // insérer plusieurs éléments T getItem(int index) // récupérer l’élément d’une position donnée int getPosition(Object o) // récupérer la position d’un élément donné void remove(T item) // supprimer un élément donnée void clear() // supprimer tous les éléments void notifyDataSetChanged() // notifie l’AdapterView des nouveaux changements pour se rafraîchir
  • 14. Université Constantine 2 14 Vues à adaptateur personnalisé (1/3) © Dr. Chaouche A.-C. Collection Mercury Venus Earth Mars Jupiter Saturn Uranus Neptune Collection <Country> country1 country2 country3 country4 country5 ...
  • 15. Université Constantine 2 15 List<Country> new Country(flagId,"Sweden") new Country(flagId,"Switz…") new Country(flagId,"Taiwan") new Country(flagId,"United…") new Country(flagId,"United…") ... Vues à adaptateur personnalisé (2/3) © Dr. Chaouche A.-C. position position TVIV
  • 16. Université Constantine 2 16 List<Country> new Country(flagId,"Sweden") new Country(flagId,"Switz…") new Country(flagId,"Taiwan") new Country(flagId,"United…") new Country(flagId,"United…") ... Vues à adaptateur personnalisé (3/3) © Dr. Chaouche A.-C. position position TVIV @Override getView(position, ...){ ... }
  • 17. Université Constantine 2 17 Vues à adaptateur personnalisé 1. Créer l’entité Country © Dr. Chaouche A.-C. /java/Country.java public class Country { int flagResourceId; String name; ... public Country(int flagResourceId, String name){ this.flagResourceId = flagResourceId; this.name = name; } }
  • 18. Université Constantine 2 18 Vues à adaptateur personnalisé 2. Créer une vue pour l'item © Dr. Chaouche A.-C. /res/layout/item_country.xml <LinearLayout xmlns:android="http://schemas.android.com/..." android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <ImageView android:id="@+id/flagIV" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/nameTV" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> TVIV
  • 19. Université Constantine 2 19 Vues à adaptateur personnalisé 3.a. Créer un adaptateur personnalisé © Dr. Chaouche A.-C. List<Country> (flagId,"Sweden") (flagId,"Switzerland") (flagId,"Taiwan") ... CountryAdapter
  • 20. Université Constantine 2 20 Vues à adaptateur personnalisé 3.a. Créer un adaptateur personnalisé © Dr. Chaouche A.-C. /java/CountryAdapter.java public class CountryAdapter extends ArrayAdapter<Country> { Activity activity; int itemResourceId; List<Country> items; ... public CountryAdapter(Activity activity, int itemResourceId, List<Country> items) { ... } @Override public View getView(int position, View convertView, ViewGroup parent) { ... } } b c a
  • 21. Université Constantine 2 21 Vues à adaptateur personnalisé 3.b. Implémenter le Constructeur © Dr. Chaouche A.-C. /java/CountryAdapter.java ... Activity activity; List<Country> items; int itemResourceId; public CountryAdapter(Activity activity, int itemResourceId, List<Country> items){ super(activity, itemResourceId, items); this.activity = activity; this.itemResourceId = itemResourceId; this.items = items; } ...
  • 22. Université Constantine 2 22 List<Country> new Country(flagId,"Sweden") new Country(flagId,"Switz…") new Country(flagId,"Taiwan") new Country(flagId,"United…") new Country(flagId,"United…") ... Vues à adaptateur personnalisé 3.c. Redéfinir la méthode getView() © Dr. Chaouche A.-C. position position TVIV @Override getView(position, ...){ ... }
  • 23. Université Constantine 2 23 Vues à adaptateur personnalisé 3.c. Redéfinir la méthode getView() © Dr. Chaouche A.-C. /java/CountryAdapter.java Activity activity; List<Country> items; int itemResourceId; @Override public View getView(int position, View convertView, ViewGroup parent){ }
  • 24. Université Constantine 2 24 Vues à adaptateur personnalisé 3.c. Redéfinir la méthode getView() © Dr. Chaouche A.-C. /java/CountryAdapter.java Activity activity; List<Country> items; int itemResourceId; @Override public View getView(int position, View convertView, ViewGroup parent){ View layout = convertView; if (convertView == null){ LayoutInflater inflater = activity.getLayoutInflater(); layout = inflater.inflate(itemResourceId, parent, false); } } Obtenir le layout TVIV layout
  • 25. Université Constantine 2 25 Vues à adaptateur personnalisé 3.c. Redéfinir la méthode getView() © Dr. Chaouche A.-C. /java/CountryAdapter.java Activity activity; List<Country> items; int itemResourceId; @Override public View getView(int position, View convertView, ViewGroup parent){ View layout = convertView; if (convertView == null){ LayoutInflater inflater = activity.getLayoutInflater(); layout = inflater.inflate(itemResourceId, parent, false); } TextView nameTV = (TextView) layout.findViewById(R.id.nameTV); ImageView flagIV = (ImageView) layout.findViewById(R.id.flagIV); } Obtenir le layout Récupérer les vues TVIV nameTVflagIV
  • 26. Université Constantine 2 26 Vues à adaptateur personnalisé 3.c. Redéfinir la méthode getView() © Dr. Chaouche A.-C. /java/CountryAdapter.java Activity activity; List<Country> items; int itemResourceId; @Override public View getView(int position, View convertView, ViewGroup parent){ View layout = convertView; if (convertView == null){ LayoutInflater inflater = activity.getLayoutInflater(); layout = inflater.inflate(itemResourceId, parent, false); } TextView nameTV = (TextView) layout.findViewById(R.id.nameTV); ImageView flagIV = (ImageView) layout.findViewById(R.id.flagIV); nameTV.setText(items.get(position).name); flagIV.setImageResource(items.get(position).flagResourceId); return layout; } Obtenir le layout Récupérer les vues Remplir les vues
  • 27. Université Constantine 2 27 Vues à adaptateur personnalisé 4. Associer l'adaptateur au Spinner © Dr. Chaouche A.-C. /java/MainActivity.java Spinner spinner = (Spinner) findViewById(R.id.spinner); ... List<Country> items = new ArrayList<>(); items.add(new Country(R.drawable.flag_sweden, "Sweden")); ... CountryAdapter adapter = new CountryAdapter(MainActivity.this, R.layout.item_country, items); spinner.setAdapter(adapter); ... /res/layout/activity_main.xml <Spinner android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/spinner"/>
  • 28. Université Constantine 2 28 Personnalisation de l'activité ModulesActivity Améliorer le design de la vue Création de l’entité Module qui contient les informations d’un module Création de la vue de chaque élément item_module Création de ModuleAdapter dérivant de ArrayAdapter<Module> TP3b : Création d’une vue des modules (1/2) © Dr. Chaouche A.-C.
  • 29. Université Constantine 2 29 TP3b : Création d’une vue des modules (2/2) © Dr. Chaouche A.-C. /java/Module.java public class Module { int id; String accronym; String name; String description; int credit; ... public Module(int id, ...){ this.id = id; ... } } /res/layout/item_module.xml /java/ModuleAdapter.java ...
  • 30. Université Constantine 2 30 AdapterView : https://developer.android.com/reference/android/widget/AdapterView.html ListView à adaptateurs personnalisés : http://www.journaldev.com/10416/android-listview-with-custom-adapter-example- tutorial Quelques liens utiles © Dr. Chaouche A.-C.
  • 31. Université Constantine 2 31 Android Developer, «Grid View,». Lien : https://developer.android.com/ guide/topics/ui/layout/gridview.html. Android Developer, «Spinners,». Lien : https://developer.android.com/ guide/topics/ui/controls/spinner.html. Source making, «Adapter Design Pattern,». Lien : https://sourcemaking.com/design_patterns/adapter. Android Developer, «References - Android Plateform API 26 : AdapterView,». Lien : https://developer.android.com/reference/android/ widget/AdapterView.html. Android Developer, «References - Android Plateform API 26 : Adapter,». Lien : developer.android.com/reference/android/widget/Adapter.html. Android Developer, «References - Android Plateform API 26 : ArrayAdapter,». Lien : https://developer.android.com/reference/android/ widget/ArrayAdapter.html. Références © Dr. Chaouche A.-C.