Android Définition d'un écouteur externe


Exemple

Quand devrais-je l'utiliser

  • Lorsque le code à l'intérieur d'un écouteur en ligne est trop gros et que votre méthode / classe devient moche et difficile à lire
  • Vous souhaitez effectuer la même action dans différents éléments (vue) de votre application

Pour ce faire, vous devez créer une classe implémentant l'un des écouteurs de l' API View .

Par exemple, aidez lorsque vous cliquez longtemps sur un élément:

public class HelpLongClickListener implements View.OnLongClickListener 
{
    public HelpLongClickListener() {
    }

    @Override 
    public void onLongClick(View v) {
        // show help toast or popup
    }
}

Il vous suffit alors d'avoir un attribut ou une variable dans votre Activity pour l'utiliser:

HelpLongClickListener helpListener = new HelpLongClickListener(...);

button1.setOnClickListener(helpListener);
button2.setOnClickListener(helpListener);
label.setOnClickListener(helpListener);
button1.setOnClickListener(helpListener);

REMARQUE: la définition des écouteurs dans une classe séparée présente un inconvénient: elle ne peut pas accéder directement aux champs de classe. Vous devez donc transmettre des données (contexte, vue) via le constructeur, sauf si vous définissez des attributs publics ou définissez des geters.