web-dev-qa-db-fra.com

Auditeur d'événement personnalisé Android

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

39
adarsh
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;
}

Vous devez maintenant savoir quand l'événement se produit réellement. Par exemple, lorsque l'utilisateur touche un point à l'écran, substituez 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. (Les exemples peuvent être toucher au sol, attendre exactement 2 secondes et relâcher - vous devrez faire de la logique dans un événement tactile).

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

 customView.setCustomEventListener(new OnCustomEventListener() {
    public void onEvent() {
        //do whatever you want to do when the event is performed.
    }
 });   
107
rDroid

Cela peut être fait de la manière suivante

Commencez par créer 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(); //We are stopping music
player.setOnStopTrackEventListener(new OnStopTrackEventListener() {
      @Override
      public void onStopTrack() {
           //Code to work when music stops
      }
});
10
Onur Ciner

J'ai trouvé ce tutoriel être très utile. Il explique les quatre étapes pour utiliser un écouteur 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 des événements et des arguments qui sont des données d’événement pertinentes.

2. Configurez une variable et un membre du programme d'écoute dans l'objet enfant auxquels une implémentation de l'interface peut être affectée.

3.Owner transmet un écouteur qui implémente l'interface et gère les événements de l'objet enfant.

4. Événements déclencheurs sur l'écouteur défini lorsque l'objet souhaite communiquer des événements à son propriétaire

J'espère que ça aide!

0
mavesonzini