2009-10-22 4 views
0

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

ответ

0

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

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

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

Смежные вопросы