Расширяемые элементы в ListView - PullRequest
0 голосов
/ 20 декабря 2018

Я пишу себе ListView , который будет содержать несколько типов элементов.Я сделал это, используя ArrayAdapter и ListView , и теперь моя проблема заключается в том, что мне нужно иметь несколько элементов внутри моего адаптера, которые будут расширяться и которые будут иметь внутренние элементы любого типа.Теперь вопрос в том, как я могу это сделать?Я знаю, что могу использовать ExpandableListView , но мне не нужно расширять некоторые элементы.Я видел это сообщение о чем-то похожем. Человек предложил использовать ExpandableListView или пользовательский элемент, я хотел бы сделать пользовательский элемент, но меня беспокоит то, что ОП ответа указанthis.

Если количество элементов невелико, рассмотрите возможность использования линейного макета для отображения списка и другого линейного макета для последнего элемента.

Я не уверен, чтоони имеют в виду «низкий» Сколько предметов я могу иметь внутри?Это вызвало бы отставание?

, поэтому мой вопрос, каков наилучший способ сделать это?Мне нужно поместить элементы в ListView, который имеет несколько типов, и один из типов может расширяться и иметь внутренние представления, которые могут снова содержать те же типы и т. Д.

Редактировать: начиная с 2 изты запутался в том, что я хочу.Я хочу сделать следующее внутри моего ArrayAdapter

Item
Item
Item
ExpandableItem {
   Item
   Item
   Item
   Item
}
Item
Item

Я пытаюсь расширить некоторые элементы, чтобы в них было больше элементов, и контролировать onClick для внутренних элементов и тому подобное.

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

О значении «низкий»: я думаю, что речь идет о производительности, но устройства сегодня лучше, чем устройства, которые были в 2013 году, когда был написан связанный пост, - возможно, вы никогда не столкнетесь с медленным пользовательским интерфейсом с вашим подходом.Конечно, это зависит не только от структуры вашего пользовательского интерфейса, но и от типа данных, которые вы будете отображать (видео или просто текст?), А также от других факторов, например, должно ли устройство выполнять тяжелую работу в фоновом режиме или нет.

RecyclerView был разработан, чтобы быть «лучшим ListView», поэтому, если производительность может быть проблемой, то, возможно, это хороший выбор.(Адаптеры для обоих ViewGroup s могут обрабатывать различные типы View, но RecyclerView предлагает лучшее средство для отображения изменений отдельных элементов и настройки анимации изменений, что является еще одним преимуществом)

Как я могу это сделать?

  • Имеют различные View типы для расширяемых и плоских элементов
  • Вы можете «вручную» расширить / сжать aView (AFAIK ваш единственный выбор при работе с ListView) с использованием некоторого типа анимации (или Transition framework), но вы всегда должны ...
  • Отслеживать расширенное состояниекаждый расширяемый элемент (например, в адаптере) и используйте их в getView() соответственно onBindViewHolder().
0 голосов
/ 20 декабря 2018

Добавить еще один ListView, такой как RecyclerView, при нажатии любого элемента.

...