У меня есть специальный адаптер для отображения списка элементов с заголовками разделов. Я рассмотрел примеры SeparatedListAdapter Джеффа Шарки и MergeAdapter компании CommonsWare как примеры того, как этого добиться, и теперь у меня есть решение, которое работает путем предоставления отдельного адаптера для содержимого каждого раздела .
Однако это создает большую проблему с производительностью. В моем случае в списке потенциально находятся тысячи элементов, каждый из которых имеет связанную дату, и я хочу использовать эту дату в качестве заголовка раздела для всех элементов с этой датой.
Итак, без заголовков разделов у меня был бы один Курсор, который возвращает элементы, отсортированные по дате. Красиво и просто.
С заголовками разделов я сейчас занимаюсь этим:
- Один курсор для выбора всех различных дат в наборе данных
- Для каждой отдельной даты , отдельный Курсор для возврата элементов, соответствующих этой дате
- Залейте даты (заголовки разделов) и отдельные SimpleCursorAdapters для элементов каждой даты в мой пользовательский адаптер.
Для этого требуется сгенерировать гораздо больше запросов к базе данных и курсоров, чем мне нужно, и до появления ListView задержка составляет несколько секунд.
Я подозреваю, что могло бы быть более простое решение, где getView
делает что-то умное и обнаруживает, когда дата меняется между последовательными элементами, а затем пробивается в новом заголовке, тем самым требуя только один Курсор. Кто-нибудь может предложить способ сделать это?