Cyril Mottier

“It’s the little details that are vital. Little things make big things happen.” – John Wooden

Astuce #2 : Simplifier La Gestion Des Clics

Je ne vais pas refaire ici une présentation sur la gestion des clics sous Android car je pense que c'est tout simplement la base lorsqu'on développe ses premières interfaces graphiques. Quoi? Vous ne vous rappelez plus de cette fameuse “technique”? Un petit récapitulatif s'impose car la notion de “listener” est essentielle sous Android! Imaginons un bouton créé via XML sur lequel on souhaite être notifié des différents clics qu'il subit. La technique de récupération de l'évènement consiste tout d'abord à initialiser un bouton avec un identifiant (afin de pouvoir en récupérer une référence dans le code Java) :

1
2
3
4
5
6
<?xml version="1.0" encoding="utf-8"?>
<Button xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/bouton_vive_android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Vive Android!" />

On modifie ensuite le OnClickListener de ce bouton grâce à la méthode setOnClickListener de la classe View :

1
2
3
4
5
6
7
8
9
findViewById(R.id.bouton_vive_android).setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        handleClick(v);
    }
});

public void handleClick(View v) {
    // Gérer le clic
}

Le problème d'une telle technique est qu'il est assez rébarbatif pour le développeur de devoir répéter ce code à chaque vue sur laquelle on souhaite recevoir des notifications de clics. Heureusement Android 1.6 vient ajouter une fonctionnalité supplémentaire qui accélère le développement : l'attribut XML onClick. Notre exemple se simplifie maintenant en quelques lignes de code XML (une seule et unique ligne supplémentaire) :

1
2
3
4
5
6
7
<?xml version="1.0" encoding="utf-8"?>
<Button xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/bouton_vive_android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="handleClick"
    android:text="Vive Android!" />

Grâce à ce code, Android va appeler la méthode handleClick lorsque un clic a eu lieu sur le bouton. Le code Java nécessite quant à lui aucune modification si vous avez utilisé le modèle présenté ci-dessus (vérifier simplement que la méthode handleClick est bien publique et qu'elle est définie dans l'Activity utilisant le bouton. Simple n'est ce pas? A vous de jouer!