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