Текущий видимый элемент в RecyclerView

Я хочу найти текущий видимый элемент/элементы в вертикальной линейной компоновке (RecyclerView), чтобы я мог прикрепить Exoplayer к самому верхнему элементу, а не ко всем элементам. И даже воспроизвести этот предмет на видимости. Я не могу найти никакой идеи для реализации этого.

Следует ли это обрабатывать во фрагменте или адаптере.

Спасибо, я новичок в разработке Android.


person user1590595    schedule 02.04.2017    source источник
comment
Сколько у вас элементов? Может быть, лучше использовать RecyclerView вместо LinearLayout? Кстати, почему у вас есть адаптер в этом случае?   -  person pxsx    schedule 02.04.2017
comment
У меня есть RecyclerView с вертикальной линейной компоновкой.   -  person user1590595    schedule 02.04.2017


Ответы (1)


В LinearLayoutManager вы можете использовать некоторые методы, которым они могут помочь.

layoutManager.findFirstVisibleItemPosition();
layoutManager.findFirstCompletelyVisibleItemPosition();
layoutManager.findLastVisibleItemPosition();
layoutManager.findLastCompletelyVisibleItemPosition();

Они возвращают позицию как целое число. Вы можете использовать, как показано ниже:

LinearLayoutManager layoutManager = ((LinearLayoutManager) recyclerView.getLayoutManager());
int firstVisibleItemPosition = layoutManager.findFirstVisibleItemPosition();

Но вы должны заметить, что в некоторых случаях findFirstVisibleItemPosition() на некоторых устройствах у меня не работало стабильно. Например, он работал на устройствах Sony, LG и Samsung, но тот же код не работал на Nexus 5. Я не уверен, почему он не работал, но я изменил свой подход из-за этой ошибки.

person Oğuzhan Döngül    schedule 02.04.2017
comment
Какой подход вы выбрали после? - person user1590595; 02.04.2017
comment
@user1590595 user1590595 это была другая и сложная функция, связанная с поведением при прокрутке с помощью CollapsableToolbarLayout. Мне удалось исправить это с помощью пользовательского поведения броска. Не думаю, что это связано с вашим случаем. Слишком много нужно объяснять. - person Oğuzhan Döngül; 02.04.2017