Android ListView с интерактивными элементами в его строках вызывает проблемы с продолжением прокрутки

Я рылся в Интернете в поисках ответа в течение нескольких часов, но не могу найти никого, кто мог бы решить эту проблему.

У меня есть список, в котором используется специальный адаптер. Строка выглядит так

alt text

Список заполняется массивом. Все отлично работает.

Теперь я хочу, чтобы ImageView и ToggleButton реагировали на щелчки, поэтому я реализую OnClickListener в своем адаптере, помещаю позиции элементов в каждый тег представления, а затем устанавливаю их onclicklistener на это.

Отлично работает, за исключением того, что теперь я не могу использовать onListItemClick для запуска активности для элемента! Хорошо, говорю я, я просто заставляю относительный макет, содержащий текст посередине, использовать тот же onclicklistener. Работает отлично. Все кликабельно, и жизнь хороша.

КРОМЕ! Теперь, когда я прокручиваю список, я не могу «продолжить» прокрутку, просто бросив еще раз. Это приводит к остановке прокрутки, и мне приходится бросать еще раз, чтобы она заработала снова. Кажется, что onclick-thingy заставляет бросковое движение интерпретироваться как касание или что-то в этом роде (это не запускает логику внутри onClick).

Я знаю, что это возможно, просто перейдя к списку телефонов в моем HTC Hero, который имеет именно тот вид и поведение, которое я хочу от своего приложения. Кажется, что в этом приложении даже работает onItemClickListener.

Итак, как я могу убедиться, что список продолжает прокручиваться и по-прежнему иметь возможность нажимать кнопку-переключатель, элемент списка и просмотр изображения? Я застрял в этом весь день, и от этого у меня болит голова :(


person AmITheRWord    schedule 19.11.2010    source источник


Ответы (1)


Еще один быстрый поиск, прежде чем я пойду домой, и наткнулся на это:

Как активировать onListItemClick в Listactivity с кнопками в списке ?

CodeFusionMobile упоминает установку для свойства android:descendantFocusability макета списка значения "blocksDescendants", и я попытался это сделать. Теперь все работает как положено. Прокрутка работает, onListitemClicked работает, нажатие ToggleButton работает, нажатие ImageView работает.

Чтобы было понятно ... В родительском RelativeLayout, прямо в верхней части row.xml, я добавил

android:descendantFocusability="blocksDescendants"
person AmITheRWord    schedule 19.11.2010