Делегирование событий касания списка Android - PullRequest
0 голосов
/ 19 февраля 2011

У меня есть список, который использует базу данных для отображения некоторых данных. Есть несколько операций, которые пользователь может выполнять над каждым элементом списка, и вместо реализации контекстного меню, в котором пользователь использует длинное нажатие, чтобы вызвать список возможных операций, я хотел бы добавить кнопки к каждому элементу, чтобы пользователь мог просто нажать кнопку и выполнить операцию. Список может быть потенциально большим, и присоединение слушателя к каждой кнопке для каждого элемента списка является излишним, поэтому я хотел бы сделать то, что программисты Javascript делают с всплывающими событиями, то есть присоединить один обработчик к элементу верхнего уровня, как весь список, и позволить события клика пузырьков до него. Как бы я поступил так?

1 Ответ

1 голос
/ 19 февраля 2011

View.OnClickListener.onClick () не всплывает, поэтому предлагаемое вами решение не будет работать.

OTOH, View.OnTouchListener.onTouch () делает пузырь, так что это может быть использовано, но это потребует от вас вручную обрабатывать нажатие вверх / вниз MotionEvent, чтобы обнаружить щелчок.

Кроме того, если вы создаете много кнопок, чем вы уверены, что добавление обработчиков onCLickбыло бы много накладных расходов, тем более что вы можете зарегистрировать один и тот же метод для всех них.

То, что вы пытаетесь сделать, звучит как преждевременная оптимизация.Прежде чем пытаться справиться с этим, убедитесь, что на ваших пользователях действительно много работы.

...