Многослойный ExpandableListView

В настоящее время я работаю над проектом, в котором мне нужно что-то вроде следующего:

- MainGroup 1 (Expandable)
  - SubGroup 1 (Expandable)
    - SubSubGroup 1 (Expandable)
      - Child View
      - Child View
      - ...
    - SubSubGroup 2 (Expandable)
      - Child View
      - Child View
      - ...
  - SubGroup 2 (Expandable)
    - SubSubGroup 3 (Expandable)
      - Child View
      - ...
    - SubSubGroup 4 (Expandable)
      - Child View
      - ...
  - SubGroup 3 (Expandable)
    - Child View
    - ...
- MainGroup 2 (Expandable)
  - ...

В лучшем случае это будет ExpandableListView внутри ExpandableListView внутри ExpandableListView - так что 3 уровня ExpandableListView :

  • MainGroup будут содержать только другие ExpandableListView .
  • Подгруппа будет содержать другие ExpandableListView , за исключением двух последних, которые всегда будут просто ChildView . (Я думаю, что эти два могут быть просто заменены одним для SubSubGroup )
  • SubSubGroup всегда будет содержать ChildViews .

Моя проблема в том, что я не понимаю основных принципов того, как ExpandableListView размещает своих дочерних элементов. Я просмотрел такие примеры, как , этот , но не могу понять функциональность.

Я пробовал просто добавить ExpandableListView в качестве дочернего в другой, но что-то не работает, так как если вы развернете его, отображается только первый элемент внутреннего ExpandableListView внешних групп. Однако я могу, установив высоту контейнера внешних групп вручную, сделать его достаточно большим, чтобы отображались все элементы во внутреннем ExpandableListView .Для достижения оптимального результата расчет высоты, конечно же, должен производиться «на лету».

Итак, чтобы перейти к более серьезным вопросам:

  • Может ли кто-нибудь дать мне объяснение «жизненного цикла» ExpandableListView (под этим я подразумеваю мгновенное использование, повторное использование представлений, развертывание / свертывание слушателей), включая:
    • Как и когда ExpandableListView уведомляется о том, что дочерний элемент развернут / свернут?
    • Как ExpandableListView узнает, сколько места чтобы все дочерние элементы поместились в контейнер группы?
  • Насколько выгодно использование ExpandableListView для создания описанного выше, по сравнению с простым смешиванием моего собственного решения с использованием некоторых LinearLayouts и некоторые OnClickListeners ?

Edit

На мой последний вопрос я могу отметить, что может быть от 1 до 20+ MainGroups .

22
задан kaspermoerch 29 November 2011 в 08:19
поделиться