51 votes

Android Écouteur d'Événement Personnalisé

Dites que je veux créer mon propre écouteur d'événements pour ma classe, comment puis-je faire cela ? Dois-je gérer un thread manuellement ?

3 votes

Voir le sujet CodePath Création d'écouteurs personnalisés

130voto

rDroid Points 1942
public class CustomView extends View(){
OnCustomEventListener mListener;
:
://some code
:
:

Créez une interface qui sera implémentée par votre activité :

public interface OnCustomEventListener {
    void onEvent();
}

public void setCustomEventListener(OnCustomEventListener eventListener) {
    mListener = eventListener;
}

Maintenant, vous devez savoir quand l'événement se produit réellement. Par exemple, lorsque l'utilisateur touche un point à l'écran, remplacez la méthode onTouchEvent :

onTouchEvent(MotionEvent ev) {
    if (ev.getAction==MotionEvent.ACTION_DOWN) {
        if(mListener!=null) 
            mListener.onEvent();
    }
}

De même, vous pouvez créer un événement spécifique que vous souhaitez. (des exemples pourraient être le toucher, attendre exactement 2 secondes et relâcher - vous devriez faire un peu de logique à l'intérieur de l'événement tactile).

Dans votre activité, vous pouvez utiliser l'objet customView pour définir un événement en tant que tel :

 customView.setCustomEventListener(new OnCustomEventListener() {
    public void onEvent() {
        //faire ce que vous voulez faire lorsque l'événement est effectué.
    }
 });

21voto

Onur Ciner Points 151

Il est possible de le faire de la manière suivante

Tout d'abord, créez une classe d'interface :

public interface OnStopTrackEventListener {
    public void onStopTrack();
}

Ensuite, créez la classe qui contrôle l'interface :

public class Player {

    private OnStopTrackEventListener mOnStopTrackEventListener;

    public void setOnStopTrackEventListener(OnStopTrackEventListener eventListener)
    {
        mOnStopTrackEventListener = eventListener;
    }

    public void stop()
    {
        if(mOnStopTrackEventListener != null)
        {
            mOnStopTrackEventListener.onStopTrack();
        }

    }
}

C'est tout. Utilisons-le maintenant

Player player = new Player();
player.stop(); //Nous arrêtons la musique
player.setOnStopTrackEventListener(new OnStopTrackEventListener() {
      @Override
      public void onStopTrack() {
           //Code à exécuter lorsque la musique s'arrête
      }
});

0 votes

Oui, code très simple et compréhensif. une seule édition nécessaire. veuillez utiliser cette séquence pour vous débarrasser de l'exception de pointeur nul. Joueur joueur = new Joueur(); joueur.stop(); //Nous arrêtons le lecteur de musique. player.setOnStopTrackEventListener(new OnStopTrackEventListener() { @Override public void onStopTrack() { //Code à exécuter lorsque la musique s'arrête } });

2voto

mavesonzini Points 301

J'ai trouvé ce tutoriel très utile. Il explique les quatre étapes pour utiliser un auditeur personnalisé pour gérer les rappels dans votre code :

1. Définissez une interface en tant que contrat d'événement avec des méthodes qui définissent les événements et les arguments qui sont des données d'événement pertinentes.

2. Configurez une variable membre d'auditeur et un setter dans l'objet enfant qui peut se voir attribuer une implémentation de l'interface.

3. Le propriétaire passe un auditeur qui implémente l'interface et gère les événements de l'objet enfant.

4. Déclenchez des événements sur l'auditeur défini lorsque l'objet souhaite communiquer des événements à son propriétaire.

J'espère que cela vous aide !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X