Вопрос:

Android: почему длительный щелчок также вызывает нормальный щелчок?

android events listview onlongclicklistener

40346 просмотра

3 ответа

861 Репутация автора

У меня есть ListView со слушателями для длинного клика и обычного клика.

Почему, когда я долго нажимаю на элемент списка, вызывается обычное событие щелчка?

Мне нужно иметь две отдельные функции для разных кликов.

Автор: mellowg Источник Размещён: 25.03.2011 02:59

Ответы (3)


270 плюса

4107 Репутация автора

Решение

От слушателей событий :

onLongClick () - возвращает логическое значение, указывающее, что вы использовали событие, и оно не должно переноситься дальше. То есть, верните true, чтобы указать, что вы обработали событие, и оно должно остановиться здесь; вернуть false, если вы не обработали его и / или событие должно продолжаться любым другим прослушивателям при нажатии.

Вы возвращаетесь trueсо своего onLongClick()и все еще получаете нормальное событие щелчка?

Отредактировано, чтобы добавить : Для ListView, вы можете использовать OnItemLongClickListener. onItemLongClick()Там используется аналогичное логическое возвращаемое значение , чтобы указать потребляется ли это событие.

Автор: erichamion Размещён: 25.03.2011 03:35

19 плюса

77181 Репутация автора

Убедитесь, что вы переопределяете OnClickListenerсвой onClickметод. Также убедитесь, что вы переопределяете OnLongClickListenerсвой onLongClickметод. И убедитесь, что ваш onLongClickметод возвращает true, так как он будет использовать onClick.

Автор: Alex Lockwood Размещён: 26.06.2012 12:57

43 плюса

252302 Репутация автора

Переформулируем ответ в более простых терминах:

Дано:

@Override
public boolean onLongClick(View view) {

    return true; // or false
}
  • return trueозначает, что событие потребляется. Это обрабатывается. Никакие другие события щелчка не будут уведомлены.
  • return falseозначает, что событие не используется. Любые другие события клика будут продолжать получать уведомления.

Так что, если вы не хотите, onClickчтобы вас тоже вызвали после onLongClick, то вам следует принять участие return trueв onLongClickмероприятии.

Автор: Suragch Размещён: 29.11.2016 06:50
Вопросы из категории :
32x32