我尝试在我的应用中集成架构组件,即Pagination,LiveData,ViewModel。
房间已经集成并经过测试,因此我可以从我的DAO课程返回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();
我在片段类中观察这个liveata:
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的位置。
我在这做错了吗?
答案 0 :(得分:1)
搞定了。它在禁用占位符后返回正确的元素