У меня есть ListView со слушателями для долгого и обычного щелчка.
Почему, когда я долго нажимаю на элемент списка, также вызывается обычное событие щелчка?
Мне нужно иметь две отдельные функции для разных кликов.
источник
У меня есть ListView со слушателями для долгого и обычного щелчка.
Почему, когда я долго нажимаю на элемент списка, также вызывается обычное событие щелчка?
Мне нужно иметь две отдельные функции для разных кликов.
Из слушателей событий :
onLongClick () - возвращает логическое значение, указывающее, использовали ли вы событие, и его не следует переносить дальше. То есть, верните true, чтобы указать, что вы обработали событие и на этом нужно остановиться; верните false, если вы не обработали его и / или событие должно продолжаться для любых других прослушивателей щелчка.
Вы возвращаетесь true
из своего onLongClick()
и все еще получаете обычное событие щелчка?
Отредактировано для добавления : для ListView вы можете использовать OnItemLongClickListener
. onItemLongClick()
Там используется аналогичное логическое возвращаемое значение , чтобы указать потребляется ли это событие.
myListView.setOnItemLongClickListener(this);
опции вам нужно будет переопределить функциюpublic boolean onItemLongClick(...)
. Здесь вам просто нужно, чтобыreturn true
указать, что LongClick был активирован и отменит триггер при обычном нажатии. Если вы вернете 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()
для ловли только длинных кликовисточник