У меня есть ListView со слушателями для долгого и обычного щелчка.
Почему, когда я долго нажимаю на элемент списка, вызывается и обычное событие щелчка?
Мне нужно иметь две отдельные функции для разных кликов.
У меня есть ListView со слушателями для долгого и обычного щелчка.
Почему, когда я долго нажимаю на элемент списка, вызывается и обычное событие щелчка?
Мне нужно иметь две отдельные функции для разных кликов.
onLongClick () - Это возвращает логическое значение, чтобы указать, использовали ли вы событие, и его не следует переносить дальше. То есть, верните true, чтобы указать, что вы обработали событие и на этом нужно остановиться; верните false, если вы не обработали его и / или событие должно продолжаться для любых других прослушивателей щелчка.
Вы возвращаетесь true
из своего onLongClick()
и по-прежнему получаете обычное событие щелчка?
Отредактировано для добавления: для ListView вы можете использовать OnItemLongClickListener
. _ 4_ здесь используется аналогичное логическое возвращаемое значение, чтобы указать, было ли обработано событие.
myListView.setOnItemLongClickListener(this);
вам необходимо переопределить функцию public boolean onItemLongClick(...)
. Здесь вам просто нужно return true
, что означает, что LongClick был активирован и отменяет триггер при обычном нажатии. Если вы вернете false, он также вызовет обычный щелчок.
- person Brandon; 02.03.2015
Перефразируя ответ проще:
Данный:
@Override
public boolean onLongClick(View view) {
return true; // or false
}
return true
означает, что событие потреблено. Это обработано. Никакие другие события щелчка не будут уведомлены.return false
означает, что событие не используется. Уведомления о любых других событиях щелчка будут по-прежнему приходить.Поэтому, если вы не хотите, чтобы onClick
также запускался после onLongClick
, вам следует return true
из события onLongClick
.
Убедитесь, что вы переопределяете OnClickListener
для своего onClick
метода. Также убедитесь, что вы переопределяете OnLongClickListener
для своего onLongClick
метода. И убедитесь, что ваш метод onLongClick
возвращает true
, так как он будет использовать onClick
.
Вы можете реализовать setOnLongClickListener
создание экземпляра new View.OnClickListener()
или new View.OnLongClickListener()
, если вы создадите длинный щелчок и реализуете обычный OnclickListener, вы получите эти ошибки при активации метода одним щелчком. Вы должны использовать new View.OnLongClickListener()
для захвата только длинных кликов