Paging3 без RecyclerView

Я знаю, что библиотека Paging3 была разработана для совместной работы с RecyclerView, однако у меня есть вариант использования, в котором результаты с разбивкой по страницам также отображаются на карте. Если вы посмотрите внутрь класса PagingDataAdapter, вы заметите, что он поддерживается AsyncPagingDiffer. Итак, пока я пытаюсь заставить его работать, используя класс AsyncPagingDiffer, который, в свою очередь, получает ListUpdateCallback, так что пользовательский интерфейс уведомляется при обновлении данных. Таким образом, как только LocationUpdateCallback отправит какое-либо обновление, я смогу получить данные, просто вызвав AsyncPagingDiffer.snapshot().

Этот фрагмент хорошо иллюстрирует то, что я пытаюсь сделать:

class MapAdapter : ListUpdateCallback {

    private val differ = AsyncPagingDataDiffer(MapDiff(), this)

    suspend fun submitData(pagingData: PagingData<Foo>) {
        differ.submitData(pagingData)
    }

    override fun onInserted(position: Int, count: Int) {
        val data = differ.snapshot()
        // Update UI
    }

    // Other callbacks...
}

но моментальный снимок всегда пуст или устарел при попытке восстановить его таким способом. Другими словами, моментальный снимок фактически доступен только после того, как обратный вызов уже был уведомлен, что для меня является нежелательным поведением.

Я могу подтвердить, что этот подход работает с Paging 2 (или как там он называется), но мне хотелось бы, чтобы был какой-то способ использовать его и с Paging 3, поскольку я не хочу понижать уровень других функций, которые выполняются с Paging 3.

0 ответов

Другие вопросы по тегам