pagedList 一次加载所有项目
pagedList loading all items at once
我正在尝试将架构组件集成到我的应用程序中,即分页、LiveData、ViewModel。
Room 之前已经集成和测试过,所以我可以从我的 DAO class return a DataSource.Factory<Integer, DbEntity>
。这是我创建 PagedList 的 LiveData 的代码:
PagedList.Config pagedListConfig =
(new PagedList.Config.Builder()).setEnablePlaceholders(true)
.setPrefetchDistance(5)
.setPageSize(10)
.setInitialLoadSizeHint(10)
.build();
LiveData<PagedList<DbEntity>> dbEntities = new
LivePagedListBuilder<>(DAO.getItemList(timeNow), pagedListConfig).build();
我正在观察我片段中的实时数据 class:
viewModel.dbEntities.observe(this, new Observer<PagedList<DbEntity>>() {
@Override
public void onChanged(@Nullable PagedList<DbEntity> inboxEntities) {
adapter.submitList(inboxEntities);
}
});
问题是列表绘制时间太长,列表 (1300) 中的所有项目似乎都是在第一次绘制时绘制的。
我在两个地方验证了这一点:onChanged
被调用时 PagedList 大小等于 1300,并且适配器的 onBindViewHolder
被调用到所有位置直到 1300。
我是不是哪里做错了?
成功了。它在禁用占位符后返回正确的元素数
我正在尝试将架构组件集成到我的应用程序中,即分页、LiveData、ViewModel。
Room 之前已经集成和测试过,所以我可以从我的 DAO class return a DataSource.Factory<Integer, DbEntity>
。这是我创建 PagedList 的 LiveData 的代码:
PagedList.Config pagedListConfig =
(new PagedList.Config.Builder()).setEnablePlaceholders(true)
.setPrefetchDistance(5)
.setPageSize(10)
.setInitialLoadSizeHint(10)
.build();
LiveData<PagedList<DbEntity>> dbEntities = new
LivePagedListBuilder<>(DAO.getItemList(timeNow), pagedListConfig).build();
我正在观察我片段中的实时数据 class:
viewModel.dbEntities.observe(this, new Observer<PagedList<DbEntity>>() {
@Override
public void onChanged(@Nullable PagedList<DbEntity> inboxEntities) {
adapter.submitList(inboxEntities);
}
});
问题是列表绘制时间太长,列表 (1300) 中的所有项目似乎都是在第一次绘制时绘制的。
我在两个地方验证了这一点:onChanged
被调用时 PagedList 大小等于 1300,并且适配器的 onBindViewHolder
被调用到所有位置直到 1300。
我是不是哪里做错了?
成功了。它在禁用占位符后返回正确的元素数