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