У меня есть ListView, поддерживаемый настраиваемым ArrayAdapter, где каждый элемент имеет 2 LinearLayouts - один я называю головкой, а другой - телом. Тело скрыто (ушло), пока пользователь не нажимает на строку, в которую он выйдет. Второй щелчок (на голове) скроет тело. Однако, если пользователь нажимает на тело, он вызывает другое действие. Все это прекрасно работает, вот и возникает проблема:Android - причудливая проблема со списком ListView
Когда пользователь нажимает на тело, я хочу визуальную индикацию действия точно так же, как обычный элемент списка будет мерцать оранжевым фоном при нажатии. Я не получаю это по умолчанию, поскольку (моя теория) событие onPress перехвачено представлением тела и не обрабатывается элементом списка.
Первое, что я пробовал, - это выполнить body.setBackground('#ff00ff')
(неважно, цвет) в событии onPress. С тех пор это не сработало (я подозреваю), после переписки нет перекраски. Затем я копаю еще немного и решил использовать фон на основе <selector/>
. Я определил body_background.xml
в папке drawable
и присвоил его фоновому свойству.
Там я заметил, что фон будет меняться только в том случае, если четный объект обрабатывается списком. Например, если я установил <item android:state_selected="true" android:drawable="@drawable/selected"/>
, то когда я нажимаю на голову - фон обоих элементов (головы и тела) изменится, однако, когда я нажимаю на тело - ничего.
Итак, чтобы обобщить мой вопрос - как изменить фон дочернего элемента в элементе списка, если я назначил ему обработчик onClick? Любые подсказки будут с благодарностью