Я пытаюсь интегрировать компоненты архитектуры в свое приложение, а именно, Pagination, LiveData, ViewModel.
Комната уже интегрирована и протестирована, поэтому я могу вернуть DataSource.Factory<Integer, DbEntity>
из моего класса DAO. Это мой код для создания LiveData PagedList:
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();
И я наблюдаю за этими ливатами в моем классе фрагментов:
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.
Я что-то не так делаю?