Короткий вопрос:
Каков правильный способ обработки базы данных + сети в библиотеке Paging из компонентов архитектуры, используя API, который использует размер страницы + для загрузки новой страницы и класса BoundaryCallback
?
Исследования и объяснения
В настоящее время класс BoundaryCallback
используемый в библиотеке подкачки для компонентов архитектуры, получает в качестве параметра экземпляр элемента в списке без фактического контекста того, где находится этот элемент. Это происходит в onItemAtFrontLoaded
и onItemAtEndLoaded
.
Мой Api должен получать страницу и размер страницы для загрузки следующего фрагмента данных. Граничный обратный вызов, добавленный как часть построителя списков выведенных страниц, должен сообщать вам, когда загружать следующую страницу данных на основе расстояния предварительной выборки и размера страницы.
Поскольку Api нуждается в номере страницы и размере страницы для предоставления, я не вижу способа отправить это Api, просто получив один из элементов из списка, предложенный в onItemAtFrontLoaded
и onItemAtEndLoaded
. Проверяя примеры Google в этой ссылке, они используют имя последнего элемента для получения следующего, но это не соответствует Api с размером страницы +.
У них также есть другой пример с только сетью, которая использует PagedKeyedDatasource
, но нет образца или подсказки о том, как смешивать это с базой данных и BoundaryCallback.
Изменить: только решения, которые я нашел до сих пор, - это сохранить последнюю загруженную страницу в общих настройках, но это звучит как грязный трюк.
Обратитесь к https://github.com/googlesamples/android-architecture-components/issues/252#issuecomment-392119468 за официальный ввод.