webentwicklung-frage-antwort-db.com.de

Android Benutzerdefinierter Ereignis-Listener

Angenommen, ich möchte einen eigenen Ereignis-Listener für meine Klasse erstellen. Wie mache ich das? Muss ich einen Thread manuell pflegen?

39
adarsh
public class CustomView extends View(){
OnCustomEventListener mListener;
:
://some code
:
:

Erstellen Sie eine Schnittstelle, die von Ihrer Aktivität implementiert wird:

public interface OnCustomEventListener {
    void onEvent();
}

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

Jetzt müssen Sie wissen, wann das Ereignis tatsächlich auftritt. Wenn der Benutzer beispielsweise einen Punkt auf dem Bildschirm berührt, überschreiben Sie die onTouchEvent-Methode:

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

Ebenso können Sie ein bestimmtes Ereignis erstellen, das Sie möchten. (Beispiele könnten Touch-Touch sein, genau zwei Sekunden warten und loslassen - Sie müssten eine Logik innerhalb des Touch-Ereignisses ausführen).

In Ihrer Aktivität können Sie mit dem customView-Objekt einen eventListener als solchen festlegen:

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

Dies kann auf folgende Weise geschehen

Erstellen Sie zuerst eine Schnittstellenklasse:

public interface OnStopTrackEventListener {
    public void onStopTrack();
}

Dann erstellen Sie die Klasse, die die Schnittstelle steuert:

public class Player {

    private OnStopTrackEventListener mOnStopTrackEventListener;

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

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

    }
}

Das ist alles. Lass es uns jetzt benutzen

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

Ich habe dieses Tutorial gefunden, um sehr hilfreich zu sein. Es erläutert die vier Schritte zur Verwendung eines benutzerdefinierten Listeners zum Verwalten von Rückrufen in Ihrem Code:

1. Definieren Sie eine Schnittstelle als Ereignisvertrag mit Methoden, die Ereignisse und Argumente definieren, die relevante Ereignisdaten sind.

2.Setzen Sie eine Listener-Member-Variable und einen Setter im untergeordneten Objekt ein, dem eine Implementierung der Schnittstelle zugewiesen werden kann.

3.Owner übergibt einen Listener, der die Schnittstelle implementiert und die Ereignisse des untergeordneten Objekts verarbeitet.

4. Lösen Sie Ereignisse für den definierten Listener aus, wenn das Objekt dem Besitzer Ereignisse mitteilen möchte

Ich hoffe es hilft!

0
mavesonzini