Делегирование события касания списка Android

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

1 ответ

Решение

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

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

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

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

Другие вопросы по тегам