У меня есть следующее SELECT
в DAO
@Query("SELECT * FROM todo ORDER BY time DESC")
abstract DataSource.Factory<Integer, TodoItem> getAll();
У меня есть репозиторий, который просто возвращает вышеупомянутое. И в модели у меня есть
PagedList.Config config = new PagedList.Config.Builder()
.setEnablePlaceholders(false)
.setInitialLoadSizeHint(40)
.setPageSize(20)
.build();
todos = new LivePagedListBuilder<>(todoRepository.getAll(), config).build();
Фрагмент просто наблюдает вышеупомянутое todos
и вызывает adapter.submitList(items)
при новых обновлениях.
Я только недавно переключился на использование androidx.paging
, до того, как я получил все данные и заполнил им RecyclerView
.
Приведенный выше код отлично работает для того, чем он является в настоящее время. Проблема в том, что мне нужна поддержка нескольких представлений. Точнее, мне нужно добавить дату поверх первого элемента с этой датой. До обновления я зацикливал элементы и, при необходимости, добавлял элементы DateHeader
(и обрабатывал несколько типов представлений в адаптере), но с помощью этого нового метода я не могу редактировать то, что обеспечивает DataSource.Factory
.
Использование ItemDecoration
или добавление даты в каждый элемент и изменение ее видимости - не вариант.
У меня также есть дата, сохраненная в базе данных, поэтому я могу group by
и получить количество элементов на date
если это может помочь.
Есть ли способ решить это? Просто для справки, здесь нет сетевого взаимодействия, все локально и сохраняется только в базе данных.