Comme nous avons vu pendant la séance précédente, les ListView sont très utiles pour afficher clairement un grand nombre de données. Nous allons donc voir comment utiliser une ListView avec ArrayList.
Alors comme d’habitude avant de se lancer dans le code je vous montre ce que l’on veut faire :
Contenu de la classe ArrayList
La classe ArrayList permet de construire des tableaux de taille variable. De la même manière qu’un tableau (un tableau d’int, de char, de String...), une ArrayList contient des valeurs d’un type donné. On doit préciser ce type quand on déclare la variable. Pour cela, on fait suivre le nom de la classe ArrayList par le type des éléments, entre chevrons (< et >).
Par exemple : ArrayList<String> maListe; déclare la variable maListe comme étant une référence vers une ArrayList de Strings. Une ArrayList est un objet, et comme les tableaux, les objets sont créés par l’exécution de l’instruction new. Nous verrons plus tard les détails. Pour l’instant, il suffit de comprendre que
maListe= new ArrayList<String>(); va créer une ArrayList vide.
Par exemple : ArrayList<String> maListe; déclare la variable maListe comme étant une référence vers une ArrayList de Strings. Une ArrayList est un objet, et comme les tableaux, les objets sont créés par l’exécution de l’instruction new. Nous verrons plus tard les détails. Pour l’instant, il suffit de comprendre que
maListe= new ArrayList<String>(); va créer une ArrayList vide.
Utilisation
- la méthode size(), qui est une fonction, retourne la longueur d’une ArrayList
Exemple : int long= maListe.size()
- la méthode get(int i) renvoie l’entrée de la case numéro i
Exemple : public static int somme(ArrayList<Integer> liste) {
int s=0; for (int i= 0; i < liste.size(); i++) { s= s + liste.get(i); }
return s;
}
- la méthode add(element) ajoute un élément à la fin de la liste
Exemple : ArrayList<String> l= new ArrayList<String>();
l.add("Slim");
l.add("ISAMM");
l.add("J2I");
- la méthode set(int i, element) remplace l’ancienne valeur qui était dans la case i par element, i doit être inférieure à la size() de l’ArrayList.
- la méthode remove(int i) supprime l’élément qui est dans la case i;
- la méthode clear() vide la liste.
ListView
Fichier activity_mainl.xml
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical" >
- <EditText
- android:id="@+id/nom"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:ems="10" >
- </EditText>
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content" >
- <Button
- android:id="@+id/add"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:text="Ajouter" />
- <Button
- android:id="@+id/find"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:text="Chercher" />
- <Button
- android:id="@+id/rem"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:text="Supprimer" />
- </LinearLayout>
- <ListView
- android:id="@+id/list"
- android:layout_width="match_parent"
- android:layout_height="wrap_content" >
- </ListView>
- </LinearLayout>
Fichier MainActivity.java
Notre activité principale (MainActivity) crée une ArrayAdapter, qui contient les objets à afficher dans la ListView. Le constructeur ArrayAdapter est passé l'ID de ressource du fichier de mise en page android.R.layout.simple_list_item_1, le ArrayAdapter va l'utiliser pour instancier un TextView pour chaque ligne.
Nous avons ensuite mis le ArrayAdapter que l'adaptateur de notre ListView.
- // trouver la ressource ListView.
- list = (ListView) this.findViewById(R.id.list);
- // créer ArrayAdapter en utilisant la liste des chaines.
- ArrayAdapterAdapter=new ArrayAdapter(MainActivity.this,android.R.layout.simple_list_item_1, tab);
- // appliquer l'adapter sur la listView
- list.setAdapter(Adapter);
- list.setOnItemClickListener(this);
Le code source et les fichiers de projet Eclipse pour ce tutoriel peuvent être téléchargés ici
0 commentaires:
Enregistrer un commentaire