无法为 PagedList 设置页面大小 - Android jetpack
Can't set page size for 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;
...
我将这些日志添加到 activity
model.data.observe(this,(list)->{
Log.d(Defines.TAG,"list page size = " + list.size());
});
数据库中有13条记录。
检查上面的日志后,我得到
" list page size = 13"
列表中的所有 13 项都不为空。
我有两个问题:
- 为什么我设置页面大小 = 10 但我得到的分页列表大小 = 13。
- 当列表视图出现时,我向下滚动到列表视图的底部
onItemAtEndLoaded
没有触发。
Why I set page size = 10 but I got the paged list size = 13?
您将页面大小设置为 10,但显示了所有项目。那可能会让你在设备上崩溃。
但是,并非在所有设备中。
终于,我找到了解决这个问题的方法。
为了解决这个问题,我必须自定义
VideoDataSource extends ItemKeyedDataSource<Long, Video>
VideoDataSourceFactory extends DataSource.Factory<Long, Video>
VideoDataSourceFactory videoDataSourceFactory = new VideoDataSourceFactory(this, pageSize);
videos = new LivePagedListBuilder<>(
videoDataSourceFactory,
pagedListConfig).build();
希望有同样问题的朋友能快点解决这个问题
我刚刚将分页库添加到我的项目中。这是我的实现。
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;
...
我将这些日志添加到 activity
model.data.observe(this,(list)->{
Log.d(Defines.TAG,"list page size = " + list.size());
});
数据库中有13条记录。 检查上面的日志后,我得到
" list page size = 13"
列表中的所有 13 项都不为空。
我有两个问题:
- 为什么我设置页面大小 = 10 但我得到的分页列表大小 = 13。
- 当列表视图出现时,我向下滚动到列表视图的底部
onItemAtEndLoaded
没有触发。
Why I set page size = 10 but I got the paged list size = 13?
您将页面大小设置为 10,但显示了所有项目。那可能会让你在设备上崩溃。 但是,并非在所有设备中。
终于,我找到了解决这个问题的方法。
为了解决这个问题,我必须自定义
VideoDataSource extends ItemKeyedDataSource<Long, Video>
VideoDataSourceFactory extends DataSource.Factory<Long, Video>
VideoDataSourceFactory videoDataSourceFactory = new VideoDataSourceFactory(this, pageSize);
videos = new LivePagedListBuilder<>(
videoDataSourceFactory,
pagedListConfig).build();
希望有同样问题的朋友能快点解决这个问题