Циркуляр RecyclerView

Допустим, мы имеем следующий набор элементов Просмотров:

View1 -> View2 -> View3 -> ... -> View(n-1) -> View(n) 

В классическом RecyclerView View1 будет находиться в первой позиции, а View (n) – последним. Теперь я хотел бы сделать этот кружок, поэтому после последнего положения мы снова прокручиваемся до первой позиции:

 View1 -> View2 -> View3 -> ... -> View(n-1) -> View(n) -> View1 -> View2 -> ... 

На первый взгляд кажется простым, но я не уверен, как выполнить этот «сброс» после View (n). Любые советы были бы очень полезными. Спасибо.

Пожалуйста, обратитесь к этому решению для ListView. Вы можете написать RecyclerView.Adapter который имеет элементы Integer.MAX_VALUE . Единственное различие заключается в том, что RecyclerView больше не имеет метода setSelectionFromTop . Вместо этого вы должны позвонить

 recyclerView.getLayoutManager().scrollToPosition(recyclerAdapter.MIDDLE); 

Чтобы сначала прокрутить recyclerView до середины.

Я сам этого не сделал, но я думаю, что этот подход будет работать.

Сначала вам нужно знать, какие виды прикреплены / видны. Это может сделать прослушиватель изменений иерархии или пользовательское представление, которое будет зависеть от ваших позиций. Во всяком случае, когда вы приближаетесь к концу адаптера, вы просто начинаете прокладывать себе путь; Удалите элементы с другого конца адаптера и добавьте их в эту цель, вызывая notifyRangeInserted и notifyRangeRemoved, как вы это делаете. Удаленные и вставленные представления должны находиться за пределами отображаемой области, поэтому анимации не будут выполняться, хотя для GridLayoutManager вам нужно будет работать в кратных количествах столбцов.

Вам нужно будет подумать о том, что делать, когда недостаточно содержимого, чтобы заполнить вид ресайклера. Вероятно, вам также захочется быть хотя бы несколькими элементами перед просмотром ресайклера, поскольку он прокручивается, возможно, вам придется добавить дубликаты для этого. Я предпочел бы переместить хотя бы один экран контента вперед за раз.

Я предполагаю, что индикатор прокрутки исчезнет. Пользовательский менеджер макетов может дать довольно хороший индикатор.