Android: пользовательский разделитель (или даже элемент) в ListView, зависящий от содержимого элемента
У меня есть ListView с элементами, содержащими информацию о местах с рейтингю и расстоянием в текущем местоположении.
Элементы сортируются по группам:
- Группа 1: в пределах 500 м
- Группа 2: 500 м - 1 км
- Группа 3: 1 км - 1,5 км
- ...
С этими группами элементы сортируются по их рейтингу.
Теперь я поместил эти элементы через свой пользовательский адаптер (расширение BaseAdapter
) в ListView
, который отлично работает.
Однако то, что я хотел бы сделать, это поставить разделитель перед каждым первым элементом каждой группы. Этот разделитель может быть TextView
, например, например. 500 м - 1 км, за которым следуют все элементы ListView
в этой группе.
Любая идея о том, как это реализовать?
Ответы
Ответ 1
Вот одна реализация, которая делает именно то, что вы описываете.
Это GPLv3, потому что он получен из этой реализации, который был GPLv3.
Вы также можете использовать мой MergeAdapter
, который имеет то преимущество, что он является Apache License 2.0. Просто передайте ему чередующийся набор заголовков TextView
и Adapter
, содержащий содержимое каждого раздела.
Или вы можете заглянуть во все это и перевернуть свое поведение в существующий класс Adapter
. Трюк состоит в том, чтобы вернуть заголовки TextView
в нужное место и правильно реализовать такие методы, как getViewTypeCount()
, getItemViewType()
, areAllItemsEnabled()
и isEnabled()
.
Ответ 2
Вот еще более приятная реализация, вдохновленная списком из списка разделов iOS: http://code.google.com/p/android-section-list/. Дело в том, что заголовок раздела остается видимым, даже если вы прокручиваете раздел вниз.