Нужно, чтобы элементы в RecyclerView отображались лимитировано (по 7 элементов) на одном экране, и по свайпу вправо появлялись следующие 7
Данные для RecyclerView подгружаются из Room, и сейчас они у меня просто вертикальным списком все находятся на одном экране (это у меня фрагмент).
Как правильно организовать структуру отображения элементов, находящихся в RecyclerView, чтобы на одном экране было всегда по 7 элементов и по свайпу вправо/влево появлялись следующие/предыдущие 7 элементов? Есть мысль обернуть этот recyclerview во viewpager, но как конкретно сделать, чтобы всегда было именно 7 элементов на экране, я понять не могу.
Ответы (1 шт):
Ну вы банально можете реализовать sql запрос в ваш room с установленным лимитом, используя аннотацию @Query например @Query("SELECT * FROM имя таблицы WHERE "ваше условие" LIMIT 7"). Вы пожете задать каждому элементу порядковый номер и на каждой странице использовать WHERE index >= 0 AND index < 7.
Можно достать все данные из room и уже в адаптере програмно разбить на нужные участки для каждой страницы.
Можно использовать DataSource, она позволяет отдавать данные из room постранично, это я использую, когда работаю с внушительным объемом данных с тяжелым onBindViewHolder
Я использую устаревшую связку LivePagedListBuilder + DataSource.Factory + PagedListAdapter