Не удается установить размер страницы для 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 пунктов списка не равны нулю.

У меня два вопроса:

  1. Почему я установил размер страницы = 10, но получил размер страничного списка = 13.
  2. Когда появляется представление списка, я прокручиваю его вниз до конца. 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, но отображаются все элементы. Это могло привести к сбою устройства. Но не на всех устройствах.

Другие вопросы по тегам