Android ListView с кликабельными элементами в строках вызывает проблемы с прокруткой - PullRequest
5 голосов
/ 19 ноября 2010

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

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

alt text

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

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

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

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

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

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

1 Ответ

16 голосов
/ 19 ноября 2010

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

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

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

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

android:descendantFocusability="blocksDescendants"
...