2015-02-13 3 views
5

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

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

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

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

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

ответ

0

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

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

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

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

4

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

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

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

Смежные вопросы