Библиотека подкачки - не могу перестать загружать элементы

Я использую библиотеку подкачки для загрузки даты прямо из сети. Должен ли я реализовать логику, чтобы прекратить получение данных? В моем случае это может быть, когда количество полученных элементов меньше размера страницы. В настоящее время, когда я дохожу до конца списка, библиотека продолжает загружать новые страницы.


person Rade    schedule 20.07.2018    source источник
comment
Вы используете Room + DataSource.Factory с BoundaryCallback или источник данных с ключом элементов?   -  person EpicPandaForce    schedule 20.07.2018
comment
@EpicPandaForce Я использую PageKeyedDataSource. Данные извлекаются напрямую из сети, не сохраняя их локально.   -  person Rade    schedule 20.07.2018


Ответы (1)


Теоретически PageKeyedDataSource имеет обратный вызов результата,

PageKeyedDataSource.LoadCallback

И у этого есть метод onResult, где в документации говорится

Передайте пустой список, если больше нет данных для загрузки.

Передайте ключ для загрузки следующей страницы в соседнийPageKey. Например, если вы загрузили страницу в loadBefore (LoadParams, LoadCallback), передайте ключ предыдущей страницы или null, если загруженная страница является первой. Если в loadAfter (LoadParams, LoadCallback), передайте ключ для следующей страницы или null, если загруженная страница является последней.

В нем говорится, что вы должны передать пустой список и null для ключа соседней страницы, и это должно работать.

person EpicPandaForce    schedule 21.07.2018
comment
Я уже пробовал использовать пустой список, и он работает, но последний фрагмент данных не отображается в списке. Позвольте мне попробовать с нулевым значением в качестве смежногоPageKey. - person Rade; 21.07.2018
comment
Ага, вот и все. Спасибо. - person Rade; 21.07.2018
comment
Что делать, если в url-адресе нет номера страницы для передачи? @ EpicPandaForce @ Rade - person Maulik Dodia; 22.08.2018
comment
Что ж, если api разбивается на страницы, тогда вопрос в том, какой параметр вы можете отправить для этого. Если не можете, то пейджинга, вероятно, нет. Если вы получите полный набор данных, вы можете сохранить его на диск, а затем использовать позиционный источник данных (Room может его сгенерировать) - person EpicPandaForce; 22.08.2018
comment
Есть ли способ продолжить загрузку, даже если список пуст или меньше requestLoadSize? Размер моей страницы - 10, и если вызываемая мной конечная точка имеет менее 10 элементов, она загружается, останавливается и не вызывает следующую конечную точку. Я хотел бы продолжать вызывать конечные точки, даже если я получил список размером менее 10. Намек? - person Soon Santos; 09.10.2018