Android: почему длительный щелчок также вызывает нормальный щелчок? - PullRequest
113 голосов
/ 25 марта 2011

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

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

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

Ответы [ 3 ]

259 голосов
/ 25 марта 2011

Из Прослушиватели событий :

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

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

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

39 голосов
/ 29 ноября 2016

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

Дано:

@Override
public boolean onLongClick(View view) {

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

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

17 голосов
/ 26 июня 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...