【问题标题】:Can't set page size for PagedList - Android jetpack无法为 PagedList 设置页面大小 - Android jetpack
【发布时间】:2020-03-31 09:47:25
【问题描述】:

我刚刚将分页库添加到我的项目中。这是我的实现。

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 没有触发。

【问题讨论】:

    标签: android android-jetpack pagedlist android-pagedlistview


    【解决方案1】:

    为什么我设置页面大小 = 10,但我得到分页列表大小 = 13?

    您将页面大小设置为 10,但所有项目都显示。这可能会让您在设备中崩溃。 但是,并非在所有设备中。

    【讨论】:

      【解决方案2】:

      最后,我找到了解决这个问题的方法。 为了解决这个问题,我必须自定义
      VideoDataSource extends ItemKeyedDataSource&lt;Long, Video&gt;

      VideoDataSourceFactory extends DataSource.Factory&lt;Long, Video&gt;

      VideoDataSourceFactory videoDataSourceFactory = new VideoDataSourceFactory(this, pageSize);
                  videos = new LivePagedListBuilder<>(
                          videoDataSourceFactory,
                          pagedListConfig).build();
      

      希望有同样问题的人能尽快解决这个问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-10-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-09
        相关资源
        最近更新 更多