Académique Documents
Professionnel Documents
Culture Documents
ZEMALI Elamine
ListView
1. Une liste des éléments peut être affichée dans Android à l'aide de
ListView.
2. Les utilisateurs peuvent ensuite sélectionner n'importe quel
élément de la liste en cliquant dessus.
3. ListView est défilant par défaut, nous n'avons donc pas besoin
d'utiliser ScrollView.
ListView
<ListView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/simpleListView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:context="com.listexample.MainActivity">
</ListView>
Etape 1
2. Créer un adaptateur
a. Il existe plusieurs types d’adaptateur, les plus simples :
i. ArrayAdapter: permet d'afficher les informations simples ;
ii. SimpleAdapter: utile dès qu'il s'agit d'écrire plusieurs informations pour
chaque élément;
iii. Il existe d’autre tel que : CursorAdapter, BaseAdapter…..
ArrayAdapter
2. Chaque fois que nous devons créer une liste personnalisée, nous
devons implémenter un adaptateur personnalisé.
SimpleAdpater
SimpleAdapter(Context context,
List<? extends Map<String, ?>> data,
int resource,
String[] from,
int[] to)
1. contexte: la référence de la classe actuelle.
2. data: List de type Map, chaque entrée dans la liste correpond a
une ligne dans la ListView
SimpleAdpater
3. Ressource: l'ID de ressource utilisé pour définir Layout des éléments
dans lesquels vous avez une vue texte, image ou autre.
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="wrap_content">
<ImageView
android:id="@+id/imageView" android:layout_width="50dp"
android:layout_height="50dp" android:padding="5dp"
android:layout_alignParentRight="true" android:layout_marginRight="10dp"
android:src="@drawable/ic_launcher" />
<TextView android:id="@+id/textView"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:padding="@dimen/activity_horizontal_margin" android:text="Demo"
android:textColor="#000" />
</RelativeLayout>
SimpleAdpater
a. Par exemple :
String fromArray[]={"userName","userImage"};
SimpleAdapter (this, hashmapData, R.layout.custom_list_items, fromArray, int[] to)
SimpleAdpater
int to[]={R.id.textView,R.id.imageView};
SimpleAdapter (this, hashmapData, R.layout.custom_list_items, fromArray,to)
Etape 3
<TextView
android:id="@+id/spetextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="TextView"
android:textSize="25sp" />
</LinearLayout>
Etape 3
Résultat :
Etape 3
1. Cas de SimpleAdapter (Exemple).
//1
listView = findViewById(R.id.mlistView);
//2
String[] playerFName = {"andria", "Cristiano", "Alexendre", "Luigie", "leonardo"};
String[] playerLName = {"Pirlo", "Ronaldo", "Del peiro", "Buffon", "Bunoci"};
ArrayList<HashMap<String, String>> arrayList = new ArrayList<>();
for (int i = 0; i < playerFName.length; i++) {
HashMap<String, String> hashMap = new HashMap<String, String>();
hashMap.put("nom", playerFName[i]);
hashMap.put("prenom", playerLName[i]);
arrayList.add(hashMap);}
String[] from={"nom","prenom"};
int[] to={R.id.Nom,R.id.Preom};
//3
SimpleAdapter adapter = new SimpleAdapter(this,arrayList,R.layout.item_list_simple,from,to);
//4
listView.setAdapter(adapter);
Etape 3
1. Résultat :
RecyclerView
1. Efficace
a. Utilise et réutilise un nombre limité d'éléments View
b. Mise à jour rapide de données a afficher.
Composants de RecyclerView
1. Les données
2. RecyclerView : Liste déroulante pour les éléments de la liste
3. Layout pour un élément de données - fichier XML
4. LayoutManager: gère l'organisation des composants de l'interface
utilisateur dans une vue
5. L'adaptateur connecte les données à RecyclerView
6. ViewHolder contient les informations de la vue afin d’afficher un
élément
Layout manager
1. Utilisé par l'adaptateur pour préparer une vue avec des données
pour un élément de liste
2. Présentation spécifiée dans un fichier de ressources XML
3. Peut avoir des éléments cliquables
4. Placé par LayoutManager
5. Elle hérite de la classe RecyclerView.ViewHolder
Etapes d’Implémentation
dependencies {
...
Implementation 'com.android.support:recyclerview-v7:26.1.0'
...
}
Etape 2
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerview"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v7.widget.RecyclerView>
Etape 3
• Implémenter l’adapter:
● onCreateViewHolder()
● OnBindViewHolder()
● getItemCount()
Etape 4-1
• onCreateViewHolder()
@Override
public WordViewHolder onCreateViewHolder(
ViewGroup parent, int viewType) {
// Creer une Vue (view) à partir de layout
View mItemView = mInflater.inflate(
R.layout.wordlist_item, parent, false);
return new WordViewHolder(mItemView, this);
}
Etape 4-2
• onBindViewHolder()
@Override
public void onBindViewHolder(
WordViewHolder holder, int position) {
// Trouver les données de cette position
String mCurrent = mWordList.get(position);
// Ajouter les données à la vue
holder.wordItemView.setText(mCurrent);
}
Etape 4-3
• getItemCount()
@Override
public int getItemCount() {
// retourner le nombre d’elements dans la liste
If(mWordList == null) {return 0}
return mWordList.size();
}
Etape 5
mRecyclerView = findViewById(R.id.recyclerview);
mAdapter = new WordListAdapter(this, mWordList);
mRecyclerView.setAdapter(mAdapter);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));