Я использую библиотеку Paging из Android Jetpack, чтобы иметь постраничную загрузку в мой RecyclerView. Теперь мне нужна простая вещь - получить в моем интерфейсе сигнал о том, что данных нет, а список пуст, чтобы я мог показать сообщение типа «нет элементов».
Проблема в том, что я использую PositionalDataSource
без заполнителей, так как я не знаю, насколько большим будет список. Другая проблема заключается в том, что я могу брать только загруженные элементы из PagedList
, поэтому я не знаю, загружаются ли в данный момент другие данные из моего DataSource
.
Итак, вопрос в том, выдает ли PagedList
или DataSource
сигнал типа «я закончил загрузку»? Это событие четко определено в библиотеке, поскольку оно прекратит загрузку, как только получит меньше данных, чем запрошено, как упоминалось здесь: Возвращаемые данные должны быть этого размера, если только они не находятся в конце списка. Вопрос в том, могу ли я каким-то образом сообщить мне об этом событии?
На данный момент я вижу следующее решение. Я реализовал свой DataSource.Factory
так же, как в Руководстве по Android, показанном в эта страница: выдача моего DataSource
как LiveData
на заводе. Кроме того, я уже представил объект LiveData
из DataSource
под названием isLoading
, я использую его в пользовательском интерфейсе, чтобы показывать индикатор выполнения каждый раз, когда DataSource
что-то загружает. Я подумываю добавить еще один LiveData
с именем emptyResults
, а затем я могу соединить их вместе в моем пользовательском интерфейсе, чтобы показывать сообщение «нет элементов», когда emptyResults && !isLoading
.
Интересно, есть ли лучший способ сделать это.