pagedList一次加载所有项目

时间:2018-04-27 13:15:17

标签: android android-architecture-components

我尝试在我的应用中集成架构组件,即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的位置。

我在这做错了吗?

1 个答案:

答案 0 :(得分:1)

搞定了。它在禁用占位符后返回正确的元素