Не удается установить размер страницы для PagedList - Android jetpack
Я только что добавил в свой проект выгружаемую библиотеку. Это моя реализация.
PagedList.Config pagedListConfig = new PagedList.Config.Builder().setEnablePlaceholders(false).setPageSize(10).build();
videos = new LivePagedListBuilder<>(
videosDAO.getPagedVideos(tontonHomePageItem.getId()), pagedListConfig)
.setBoundaryCallback(boundaryCallBack).build();
private class VideosBoundaryCallBack extends PagedList.BoundaryCallback<Video> {
public VideosBoundaryCallBack() {
}
@Override
public void onItemAtEndLoaded(@NonNull Video itemAtEnd) {
KLog.d(TAG, "onItemAtEndLoaded + next page token = " + mNextPageToken);
if (loadVideoState != Defines.LOADING_STATE.BUFFERING) {
KLog.d(TAG, "onItemAtEndLoaded LOAD");
loadVideoState = Defines.LOADING_STATE.BUFFERING;
//load more data from web service
}
}
}
@DAO
@Query("SELECT * from video_table WHERE channelId=:channelId ORDER BY year DESC")
DataSource.Factory<Integer, Video> getPagedVideos(String channelId);
@Сущность
public class Video{
@NonNull
@PrimaryKey()
@ColumnInfo(name = "id")
public String id;
...
Я добавил эти записи в активность
model.data.observe(this,(list)->{
Log.d(Defines.TAG,"list page size = " + list.size());
});
В базе данных 13 записей. После проверки журнала я получил
"размер страницы списка = 13"
все 13 пунктов списка не равны нулю.
У меня два вопроса:
- Почему я установил размер страницы = 10, но получил размер страничного списка = 13.
- Когда появляется представление списка, я прокручиваю его вниз до конца.
onItemAtEndLoaded
не сработал.
2 ответа
Наконец, я нашел решение этой проблемы. Чтобы решить эту проблему, мне нужно настроить
VideoDataSource extends ItemKeyedDataSource<Long, Video>
VideoDataSourceFactory extends DataSource.Factory<Long, Video>
VideoDataSourceFactory videoDataSourceFactory = new VideoDataSourceFactory(this, pageSize);
videos = new LivePagedListBuilder<>(
videoDataSourceFactory,
pagedListConfig).build();
Надеюсь, у кого-то такая же проблема может быстро решить эту проблему.
Почему я установил размер страницы = 10, но получил размер страничного списка = 13?
Вы устанавливаете размер страницы 10, но отображаются все элементы. Это могло привести к сбою устройства. Но не на всех устройствах.