Я думаю, что вопрос говорит сам за себя: я хочу создать собственный OnItemClickListener для ListView. Я хочу добавить и изменить параметры для OnItemClickListener, но как я могу создать собственный, чтобы он вызывался, если я нажимаю элемент в ListView?
Создать собственный OnItemClickListener
comment
stackoverflow.com/questions/15222129/ я думаю, что это помогает ты
- person Kostya Khuta   schedule 03.08.2013
Ответы (1)
Сначала вы создаете интерфейс, затем реализуете метод, в котором вы устанавливаете прослушиватель в своем пользовательском классе, а затем уже создаете основной класс для прослушивания вашего пользовательского события.
Интерфейс:
public interface OnCustomEventListener{
public void onEvent(); //can have parameters
}
метод в вашем, например. адаптер: частный OnCustomEventListener mListener; //поле
//setter method
public void setCustomEventListener(OnCustomEventListener eventListener) {
this.mListener=eventListener;
}
слушатель:
someObjectYouWantToHaveYourCustomListenerToBeAssignedFor.setCustomEventListener(new OnCustomEventListener(){
public void onEvent(){
//do whatever you want to do when the event is performed.
}
});
как позвонить напр. от вашего адаптера:
if(this.mListener!=null){
this.mListener.onEvent();
}
P.S. Ваш пользовательский слушатель может иметь столько параметров, сколько вы хотите
person
Boris Mocialov
schedule
03.08.2013
Спасибо за это, но есть одна вещь, которую я не понимаю. Почему
OnCustomEventListener
знает, что он должен вызвать, если я нажму на элемент?
- person Cilenco; 03.08.2013
потому что
OnCustomEventListener
действует как обратный вызов
- person Boris Mocialov; 03.08.2013
Я реализую эти три шага в своих классах, но не могу получить ClickEvents
- person Cilenco; 03.08.2013
@Cilenco, когда ты звонишь:
this.mListener.onEvent();
?
- person Boris Mocialov; 03.08.2013
Я сделал класс, который
extands ListView
. Туда я помещаю интерфейс OnCustomEventListener
и метод setCustomEventListener(OnCustomEventListener eventListener)
. В своей деятельности я вызываю myListView.setCustomEventListener(new ...)
с событием внутри.
- person Cilenco; 03.08.2013
@Cilenco, можете ли вы использовать
Log.i(...)
в своем пользовательском классе, который extends ListView
в той части, где должно быть запущено событие, чтобы увидеть, действительно ли оно запускается
- person Boris Mocialov; 03.08.2013
Я немного поработал. Событие запускается при запуске Activity, но не при нажатии на элемент...
- person Cilenco; 03.08.2013
@Cilenco не забывайте, что вы должны вызывать `this.mListener.onEvent();` каждый раз, когда вы хотите, чтобы ваш основной класс знал, что действие инициировано
- person Boris Mocialov; 03.08.2013
Я думаю, что моя проблема в том, что я должен запустить событие из метода
onTouchEvent
, верно? Как я могу проверить клик в этом методе? Или я что-то неправильно понял?
- person Cilenco; 03.08.2013
@Cilenco хорошо, да, я так думаю, я не знаю, как выглядит ваш код, поэтому я не уверен, но да, вы должны запускать событие, когда происходит какое-то событие. Запуск события:
this.mListener.onEvent();
- person Boris Mocialov; 03.08.2013