Как прокрутить до конца при использовании RecyclerView, PagedListAdater и Room? - PullRequest
0 голосов
/ 04 июня 2019

Как правило, мы можем использовать следующий код, чтобы перейти к нижней части, если все данные были загружены в память.

recyclerView.scrollToPosition(YourArraylist.size()-1);

Но при использовании PagedListAdater и Room сущность последнего элемента вообще не загружалась.Поэтому при вызове recyclerView.scrollToPosition я могу прокручиваться с помощью полосы прокрутки, но данные не отображаются.На моем экране я увидел несколько слов вроде «ABV ..»;и если я прокручиваю вверх / вниз вручную, эти представления могут отображаться правильно.

Кстати, я также пробовал ((LinearLayoutManager)recyclerView.getLayoutManager()).scrollToPositionWithOffset(index,0);, это тоже не работает.

Связанный кодкак показано ниже,

DataSource.Factory<Integer, ContactWithSectionView> dsFactory = contactDao.listAll();

concertList = new LivePagedListBuilder<>(dsFactory, 5)
                .build();

concertList.observe((LifecycleOwner)context,(pagedList) -> {
            this.adapter.submitList(pagedList);
        });
@Dao
public interface ContactDao {
    @Query("select * from ContactWithSectionView")
    DataSource.Factory<Integer, ContactWithSectionView> listAll();
}

Я пытался вызвать concertList.getValue().loadAround(index) для загрузки данных перед вызовом recyclerView.scrollToPosition(int), но это тоже не сработало.- index - это позиция, в которую я хочу перейти.


Наконец, я сдался.не использовал PagedListAdapter + Room и загружал все элементы в память за один раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...