Скажем, я хочу сделать свой собственный прослушиватель событий для своего класса, как мне это сделать? Нужно ли поддерживать поток вручную?
Пользовательский прослушиватель событий Android
Ответ 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 на определенном слушателе, когда объект хочет передать события владельцу
Надеюсь, поможет!