Я хочу генерировать a ListView
это имеет некоторые делители между некоторыми записями, как он видны в некоторых разделах свойства. Посмотрите пример ниже. Я пытаюсь генерировать a List
это состоит из некоторого textviews, сопровождаемого одним из необычных делителей, объясняющих следующую часть списка и с другой стороны некоторых текстовых представлений. Как это может быть сделано? Я думал о создании различных взглядов добавлять к списку? Действительно ли это - способ пойти?
У меня есть решение. Не знаю, лучший ли он.
Я использую специальный адаптер, полученный из ArrayAdapter для списка, как описано в этом учебном пособии . В классе адаптера я проверяю, является ли позиция в методе getView нормальной строкой, затем увеличиваю макет строки. Если это первая строка из новой группы, я увеличиваю макет заголовка, который представляет собой обычную строку плюс заголовок группы над ней.
Если вы не хотите смешивать заголовок с одной из ваших строк. Рассмотрим следующее решение:
Вы можете перезаписать два метода getItemViewType и getViewTypeCount . Теперь у вас есть список, который может отображать разные строки. Вам нужно проверить ожидаемый тип представления для элемента в методе getView и раздуть различные макеты в зависимости от этого.
Список будет обрабатывать переработку для вас таким образом, что он будет возвращать только правильные представления повторного цикла в ваш метод getView, это означает, что если recycleView не равен нулю, его можно использовать для отображения вашей текущей ячейки.
Вы можете использовать мой SectionedAdapter
, если GPLv3 приемлема (лицензированный таким образом из-за некоторых исходных текстов). Вы можете использовать мой MergeAdapter
, если вам нужно что-то более гибкое и с менее ограничивающей лицензией (Apache 2).
Думаю, вы ищете android.widget.ExpandableListView
http://developer.android. com / reference / android / widget / ExpandableListView.html
Меня тоже интересует ответ на этот вопрос. Должен быть более простой способ сделать это.
В адаптере есть метод Adapter.getItemViewType (int position).
ListView определяет возвращаемое значение ITEM_VIEW_TYPE_HEADER_OR_FOOTER, которое указывает, является ли возвращаемый элемент верхним или нижним колонтитулом.
Я не пробовал, но предполагаю, что если вы создадите свой собственный адаптер и вернете элемент с типом, указывающим, что это верхний или нижний колонтитул, ListView отобразит его соответствующим образом.