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

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

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

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

Ответ 1

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

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

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

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

Ответ 2

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

Ответ 3

Повторение ответа проще:

Дано:

@Override
public boolean onLongClick(View view) {

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

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