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