samedi 15 octobre 2011

TUTO DÉVELOPPEMENT ANDROID : PERSONNALISER UNE LISTVIEW

Les ListView sont très utiles pour afficher clairement un grand nombre de données. Néanmoins insérer une simple ListView dans son application Android peut ne pas convenir esthétiquement parlant. Nous allons donc voir comment personnaliser une ListView.

tuto-dev-android


Pour commencer, récupérez 3-4 icônes pour pouvoir développer votre ListView personnalisée, comme vous pouvez le constater moi j'ai récupéré les icônes de la suite Office.

Code XML
Nous allons d'abord créer une ListView dans le fichier main.xml, il n'y a aucune difficulté pour cette étape.

tuto-dev-android-listview

Maintenant créons un nouveau fichier XML que l'on va appeler affichageitem.xml, qui comme son nom l'indique va nous permettre de créer la vue qui affichera l'item dans la ListView. Voici un petit schéma montrant comment nous allons construire notre vue affichageitem :

tuto dev android listview
Donc voici le fichier affichageitem.xml correspondant à ce schéma. Normalement il n’y a pas de difficulté particulière donc je ne vais pas donner d’explications particulières  mais cela n’empêche que si vous ne comprenez pas, vous pouvez me poser des questions en laissant un commentaire.



<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    >
 
    <ImageView
  android:id="@+id/img"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
     android:layout_gravity="center_vertical"
     android:padding="10px"
  />
 
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:orientation="vertical"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:layout_gravity="center_vertical"
     android:paddingLeft="10px"
     android:layout_weight="1"
     >
 
     <TextView android:id="@+id/titre"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:textSize="16px"
          android:textStyle="bold"
          />
 
     <TextView android:id="@+id/description"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          />
 
    </LinearLayout>
 
</LinearLayout>
Concernant le codage XML, c’est fini ! Maintenant passons à la partie code JAVA.

Code JAVA

Encore une fois, comme d’habitude j’ai commenté le code JAVA, je n’ai donc pas d’explication à faire en plus. Simplement grâce à ce tutoriel Android, vous allez apprendre à utiliser les SimpleAdapter, lesAlertDialog, et bien évidemment les ListView (et oui quand même c’est un peu pour ça qu’on est là…) Alors voici le code JAVA :
package com.tutomobile.android.listView;
 
import java.util.ArrayList;
import java.util.HashMap;
 
import com.tutomobile.android.listView.R;
 
import android.app.Activity;
import android.app.AlertDialog;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.AdapterView.OnItemClickListener;
 
public class Tutoriel5_Android extends Activity {
 
 private ListView maListViewPerso;
 
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
        //Récupération de la listview créée dans le fichier main.xml
        maListViewPerso = (ListView) findViewById(R.id.listviewperso);
 
        //Création de la ArrayList qui nous permettra de remplire la listView
        ArrayList<HashMap<String, String>> listItem = new ArrayList<HashMap<String, String>>();
 
        //On déclare la HashMap qui contiendra les informations pour un item
        HashMap<String, String> map;
 
        //Création d'une HashMap pour insérer les informations du premier item de notre listView
        map = new HashMap<String, String>();
        //on insère un élément titre que l'on récupérera dans le textView titre créé dans le fichier affichageitem.xml
        map.put("titre", "Word");
        //on insère un élément description que l'on récupérera dans le textView description créé dans le fichier affichageitem.xml
        map.put("description", "Editeur de texte");
        //on insère la référence à l'image (convertit en String car normalement c'est un int) que l'on récupérera dans l'imageView créé dans le fichier affichageitem.xml
        map.put("img", String.valueOf(R.drawable.word));
        //enfin on ajoute cette hashMap dans la arrayList
        listItem.add(map);
 
        //On refait la manip plusieurs fois avec des données différentes pour former les items de notre ListView
 
        map = new HashMap<String, String>();
        map.put("titre", "Excel");
        map.put("description", "Tableur");
        map.put("img", String.valueOf(R.drawable.excel));
        listItem.add(map);
 
        map = new HashMap<String, String>();
        map.put("titre", "Power Point");
        map.put("description", "Logiciel de présentation");
        map.put("img", String.valueOf(R.drawable.powerpoint));
        listItem.add(map);
 
        map = new HashMap<String, String>();
        map.put("titre", "Outlook");
        map.put("description", "Client de courrier électronique");
        map.put("img", String.valueOf(R.drawable.outlook));
        listItem.add(map);
 
        //Création d'un SimpleAdapter qui se chargera de mettre les items présent dans notre list (listItem) dans la vue affichageitem
        SimpleAdapter mSchedule = new SimpleAdapter (this.getBaseContext(), listItem, R.layout.affichageitem,
               new String[] {"img", "titre", "description"}, new int[] {R.id.img, R.id.titre, R.id.description});
 
        //On attribut à notre listView l'adapter que l'on vient de créer
        maListViewPerso.setAdapter(mSchedule);
 
        //Enfin on met un écouteur d'évènement sur notre listView
        maListViewPerso.setOnItemClickListener(new OnItemClickListener() {
   @Override
         @SuppressWarnings("unchecked")
          public void onItemClick(AdapterView<?> a, View v, int position, long id) {
    //on récupère la HashMap contenant les infos de notre item (titre, description, img)
          HashMap<String, String> map = (HashMap<String, String>) maListViewPerso.getItemAtPosition(position);
          //on créer une boite de dialogue
          AlertDialog.Builder adb = new AlertDialog.Builder(Tutoriel5_Android.this);
          //on attribut un titre à notre boite de dialogue
          adb.setTitle("Sélection Item");
          //on insère un message à notre boite de dialogue, et ici on affiche le titre de l'item cliqué
          adb.setMessage("Votre choix : "+map.get("titre"));
          //on indique que l'on veut le bouton ok à notre boite de dialogue
          adb.setPositiveButton("Ok", null);
          //on affiche la boite de dialogue
          adb.show();
         }
         });
 
    }
}
Une fois le code compilé et l’émulateur Android lancé on obtient donc ceci :
Et lorsque l’on clique sur un item on obtient ceci :

0 commentaires:

Enregistrer un commentaire

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design by Free Android website | Bloggerized by wassim El mririe - Ramzi Essid | TO Best Web Host