Android: пользовательский разделитель (или даже элемент) в ListView, зависящий от содержимого элемента - PullRequest
11 голосов
/ 22 октября 2009

У меня есть ListView с элементами, содержащими информацию о местах с рейтингом и расстоянием до текущего местоположения.

Элементы отсортированы по группам:

  • Группа 1: в пределах 500 м
  • Группа 2: 500 м - 1 км
  • Группа 3: 1 км - 1,5 км
  • ...

С помощью этих групп элементы сортируются по рейтингу.

Теперь я добавляю эти предметы через свой специальный адаптер (расширение BaseAdapter) в ListView, который отлично работает.

Однако я хотел бы поместить разделитель перед каждым первым элементом каждой группы. Этот разделитель может быть TextView, например, говоря 500 м - 1 км , за которыми следуют все ListView предметов в этой группе.

Есть идеи, как это реализовать?

Ответы [ 2 ]

19 голосов
/ 22 октября 2009

Вот одна реализация , которая делает именно то, что вы описываете.

Это GPLv3, потому что он получен из этой реализации , которая была GPLv3.

Вы также можете использовать для этого мой MergeAdapter, который имеет преимущество в виде лицензии Apache 2.0. Просто передайте ему чередующийся набор заголовков TextView s и Adapter s, содержащий ценность каждого раздела.

Или вы можете посмотреть на все это и свернуть их поведение в существующий класс Adapter. Хитрость заключается в том, чтобы вернуть заголовки TextView в нужное место и правильно реализовать такие методы, как getViewTypeCount(), getItemViewType(), areAllItemsEnabled() и isEnabled().

.
4 голосов
/ 13 июня 2011

Вот еще более приятная реализация, вдохновленная представлением списка разделов iOS: http://code.google.com/p/android-section-list/. Главное, что заголовок раздела остается видимым, даже если вы прокрутите раздел вниз.

...