Android Recycler View Horizontal Прокрутите до последнего элемента и покажите первый элемент

В настоящее время я работаю над просмотром ресайклера, который имеет горизонтальный свиток.

У меня есть список, содержащий эти значения:

{ "2001", "2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009", "2010", …}

и так далее, до 2017 года

Моя цель здесь – выбрать год в центре

Все работает хорошо, но у меня есть 2 проблемы:

  1. Я не могу прокручивать правый край, это похоже на то, что recyclerview имеет ограничение на прокрутку. Скажем, 4 последних пункта: "2014", "2015", "2016", "2017" . Я могу прокручивать только до «2003». На данный момент я исправляю эту проблему, добавляя фиктивные годы до и после списка. (очень хаки, но не настолько твердый)

  2. Я хочу показать первого ребенка, когда прокрутка дойдет до конца. Например, когда я могу прокручиваться до конца 2017 года , я хочу показать первый элемент списка рядом с 2017 годом, и в этом случае это «2001» . Например: 2013 | 2014 | 2015 | 2016 | 2017 | 2001 | …

За ответ выше вы не можете сделать recyclerview scroll как круг, от последнего элемента до первого элемента. Таким образом, вам нужно вычислить точно количество элементов и переопределить перехват ontouch для recyclerview для достижения желаемого эффекта.

то, что вы должны использовать здесь, – это цикл вашего recyclerview

в вашем адаптере переопределите getItemCount (), чтобы вернуть что-то большое, как Integer.MAX_VALUE:

 @Override public int getItemCount() { return Integer.MAX_VALUE; } 

в onBindViewHolder () по модулю делить (%) позицию по реальному номеру позиции:

  @Override public void onBindViewHolder(MyViewHolder holder, int position) { int positionInList = position % dataList.size(); Item item = dataList.get(positionInList); //... } 

в конце, установите текущий элемент на что-то посередине (иначе он будет бесконечным только в нисходящем направлении).

 // scroll to middle item recyclerView.getLayoutManager().scrollToPosition(Integer.MAX_VALUE / 2); 

Попробуй это,

 recyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)); recyclerView.getLayoutManager().scrollToPosition(5); 

вы можете поместить свой номер позиции вместо 5, можете сделать (list.size () – 3) в течение определенного года.

Intereting Posts
Как я могу инициализировать переменную перед каждым тестом, используя kotlin-test framework TornadoFX переопределяет макетыДети по региону Использование предложения Kotlin WHEN для <, <=,> =,> сравнений kotlin андроид фрагмент пустой recycler вид после назад Частный конструктор в Котлине Intellij невежество на .kt файлов в структуре пакета без инструкции «package ..»? ЗАЧЕМ? Невозможно ссылаться на подкласс в Котлине Обработчик комментариев Kotlin: он не может заставить его работать Панель «Призрачная» нижняя панель навигации, когда фрагмент загружается в домашней деятельности Статические методы и переменные Котлина Android – Сделать функцию ложной / не запускать Как отправить уведомление от IntentService на Android с помощью Kotlin Преобразование кода Python в Kotlin Kotlin switch-statement с более чем двумя переменными? Ошибка сборки: ошибка: выполнение не выполнено для задачи: app: compileLightningLiteDebugKotlin '. > Ошибка компиляции