Android Custom Event Listener

ぃ、小莉子 提交于 2019-12-17 06:24:09

问题


Say I want to make my own event listener for my class, how do I do that? Do I need to maintain a thread manually?


回答1:


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

Create an interface that will be implemented by your activity:

public interface OnCustomEventListener {
    void onEvent();
}

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

Now you need to know when the event is actually occurring. For example when the user touches a point on screen, override onTouchEvent method:

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

Similarly, you can create a specific event that you want. (examples could be touch down, wait for exactly 2 seconds and release- you would need to do some logic inside touch event).

In your activity, you can use the customView object to set an eventListener as such:

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



回答2:


It can be done in the following way

First create an interface class :

public interface OnStopTrackEventListener {
    public void onStopTrack();
}

Then create the class that controls the interface :

public class Player {

    private OnStopTrackEventListener mOnStopTrackEventListener;

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

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

    }
}

That is all. Let's use it now

Player player = new Player();
player.stop(); //We are stopping music
player.setOnStopTrackEventListener(new OnStopTrackEventListener() {
      @Override
      public void onStopTrack() {
           //Code to work when music stops
      }
});



回答3:


I found this tutorial to be VERY HELPFUL. It explains the four steps to using a custom listener to manage callbacks in your code:

1.Define an interface as an event contract with methods that define events and arguments which are relevant event data.

2.Setup a listener member variable and setter in the child object which can be assigned an implementation of the interface.

3.Owner passes in a listener which implements the interface and handles the events from the child object.

4.Trigger events on the defined listener when the object wants to communicate events to it's owner

Hope it helps!



来源:https://stackoverflow.com/questions/8292712/android-custom-event-listener

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!