pagedList 一次加载所有项目

Yas*_*svi 5 android android-architecture-components

我试图在我的应用程序中集成架构组件,即分页、LiveData、ViewModel。Room 之前已经集成和测试过,所以我可以DataSource.Factory<Integer, DbEntity>从我的 DAO 类中返回一个。这是我创建 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();
Run Code Online (Sandbox Code Playgroud)

我正在我的片段类中观察这个实时数据:

viewModel.dbEntities.observe(this, new Observer<PagedList<DbEntity>>() {
            @Override
            public void onChanged(@Nullable PagedList<DbEntity> inboxEntities) {
                adapter.submitList(inboxEntities);
            }
        });
Run Code Online (Sandbox Code Playgroud)

问题是绘制列表的时间太长,似乎列表中的所有项目 (1300) 都是在第一次绘制时绘制的。

我在两个地方验证了这一点:onChanged在 PagedList 大小等于 1300onBindViewHolder的情况下被调用,并且适配器被调用到 1300 以内的所有位置。

我在这里做错了吗?

Yas*_*svi 4

成功了。禁用占位符后返回正确的元素数