Существуют методы, которые можно применять внутри класса RecyclerView.Adapter
в качестве решения, например, возвращать большие числа в функции getItemCount()
(скажем, dataList.size * 10
) и определять позицию адаптера внутри onBindViewHolder()
как adapterPosition%dataList.size
. Это создает большое пространство для перемещения RecyclerView во время прокрутки, а оператор %
делает переход позиции адаптера к элементу на другом конце (модульная арифметика c). Поэтому возможно иметь конечное l oop.
Однако этот метод не кажется эффективным решением, особенно для больших данных. Я не уверен, хотя. Возможно это не использует много ресурсов. Было бы неплохо, если бы вы могли предоставить некоторую теоретическую информацию.
В любом случае, я стремлюсь к более правильному решению и реальному бесконечному l oop. Какую часть LinearLayoutManager
или RecyclerView
я должен изменить, чтобы я мог сделать что-то вроде этого:
adapterPosition = (adapterPosition + direction) % dataList.size // direction = +1 for up slide, -1 for down slide
var nextElementToBeDisplayed = NextElementToBeDisplayed(dataList.(adapterPosition))
Должен ли я также настроить, какой View (или ViewHolder) должен быть подготовлен подобным кодом? Сколько разделов мне нужно переопределить?
Как примечание: эффект прокрутки должен быть непрерывным и плавным. Даже если itemIndex равен 0 или MAX, визуальный список должен сохранять скорость прокрутки и не останавливаться внезапно.