Android - необычная проблема с ListView - PullRequest
0 голосов
/ 22 октября 2009

У меня есть 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? Любые советы будут с благодарностью

1 Ответ

0 голосов
/ 23 октября 2009

OK. Вот еще немного информации, которую я копаю по пути.

  1. В настоящее время я пытаюсь переключить реализацию на ExpandableListView, который предоставляет функции, которые я должен был закодировать (скользящее тело). Проблема, с которой я могу столкнуться, заключается в том, что у меня есть необычная «бесконечная» реализация списка, и я использую метод ArrayAdapter # add для динамического добавления элементов в список во время прокрутки (см. Мое руководство на androidguys.com ) Что ж, метод add отсутствует в BaseExpandableListAdapter, поэтому мне нужно посмотреть, будет ли работать добавление элементов во внутренний массив (не было для ArrayAdapter), возможно, выполнение ExpandableListView # notifyChanged () позаботится о том, чтобы
  2. Тот факт, что я ничего не вижу при непосредственном использовании метода setBackgroundColor, возможно, связан с последующим вызовом startActivity вызова, который останавливает все рисование до тех пор, пока не отобразится новая активность

P.S. это было решено путем переключения на ExpandableListView. И могу я добавить - это красиво! Не нужно ничего изобретать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...