Подтвердить что ты не робот

Пользовательский прослушиватель событий Android

Скажем, я хочу сделать свой собственный прослушиватель событий для своего класса, как мне это сделать? Нужно ли поддерживать поток вручную?

4b9b3361

Ответ 1

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

Создайте интерфейс, который будет реализован вашей деятельностью:

public interface OnCustomEventListener {
    void onEvent();
}

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

Теперь вам нужно знать, когда событие действительно происходит. Например, когда пользователь касается точки на экране, переопределите метод onTouchEvent:

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

Аналогичным образом вы можете создать определенное событие, которое вы хотите. (примеры могут касаться, ждать ровно 2 секунды и отпускать - вам нужно будет сделать некоторую логику внутри события касания).

В вашей деятельности вы можете использовать объект customView для установки eventListener как такового:

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

Ответ 2

Это можно сделать следующим образом

Сначала создайте класс интерфейса:

public interface OnStopTrackEventListener {
    public void onStopTrack();
}

Затем создайте класс, который управляет интерфейсом:

public class Player {

    private OnStopTrackEventListener mOnStopTrackEventListener;

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

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

    }
}

Вот и все. Позвольте использовать его сейчас

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

Я нашел этот учебник ОЧЕНЬ ПОЛЕЗНЫМ. В нем объясняются четыре шага к использованию пользовательского прослушивателя для управления обратными вызовами в вашем коде:

1. Определите интерфейс как контракт на событие с методами, которые определяют события и аргументы, которые являются релевантными данными о событиях.

2. Задайте переменную-член-слушатель и установщик в дочернем объекте, которому может быть назначена реализация интерфейса.

3.Выход проходит в слушателе, который реализует интерфейс и обрабатывает события от дочернего объекта.

События 4.Trigger на определенном слушателе, когда объект хочет передать события владельцу

Надеюсь, поможет!