Нужно, чтобы элементы в RecyclerView отображались лимитировано (по 7 элементов) на одном экране, и по свайпу вправо появлялись следующие 7

Данные для RecyclerView подгружаются из Room, и сейчас они у меня просто вертикальным списком все находятся на одном экране (это у меня фрагмент).

Как правильно организовать структуру отображения элементов, находящихся в RecyclerView, чтобы на одном экране было всегда по 7 элементов и по свайпу вправо/влево появлялись следующие/предыдущие 7 элементов? Есть мысль обернуть этот recyclerview во viewpager, но как конкретно сделать, чтобы всегда было именно 7 элементов на экране, я понять не могу.


Ответы (1 шт):

Автор решения: Vlad Orlinskas

Ну вы банально можете реализовать sql запрос в ваш room с установленным лимитом, используя аннотацию @Query например @Query("SELECT * FROM имя таблицы WHERE "ваше условие" LIMIT 7"). Вы пожете задать каждому элементу порядковый номер и на каждой странице использовать WHERE index >= 0 AND index < 7.

Можно достать все данные из room и уже в адаптере програмно разбить на нужные участки для каждой страницы.

Можно использовать DataSource, она позволяет отдавать данные из room постранично, это я использую, когда работаю с внушительным объемом данных с тяжелым onBindViewHolder

Я использую устаревшую связку LivePagedListBuilder + DataSource.Factory + PagedListAdapter

→ Ссылка