Как использовать ViewPager внутри элементов RecyclerView?

Каким образом можно добиться, чтобы в элементах RecyclerView списка ViewPager работал корректно? Создал небольшое тестовое приложение для демонстрации проблемы:
f3531825f26c497d84b7a17c9ece9a55.png
На скриншоте RecyclerView+LinearManager с абсолютно идентичными (по идее) элементами в количестве 5 штук. Однако лишь первый элемент работает корректно (показывает фрагменты внутри ViewPager). Каждый элемент содержит в себе только ViewPager. Самому ViewPager'у я выставил красный цвет фона. К нему подключен FragmentPagerAdapter, создающий фрагменты с голубым фоном.
Код: https://gist.github.com/gim-/9336a2aa05d7db96de562...
Весь проект: ViewPagerInsideRecyclerView.zip
Уже довольно много времени провёл в попытках понять, что происходит, но пока безрезультатно. Кто-нибудь с подобным встречался? Какие варианты решения проблемы?
UPD:
Если в методе onBindViewHolder адаптера RecyclerView не выставить PagerAdapter первому элементу, то все элементы списка будут красными:
@Override
public void onBindViewHolder(MyAdapter.ViewHolder holder, int position) {
    FragmentManager fragmentManager = ((AppCompatActivity) mContext).getSupportFragmentManager();
    if (position == 0) return;
    holder.viewPager.setAdapter(new MyPagerAdapter(fragmentManager));
}
  • Вопрос задан
  • 480 просмотров
Решения вопроса 1
gim0
@gim0 Автор вопроса
После долгих мучительных танцев с бубном, мне наконец-то удалось найти решение. В методе onBindViewHolder адаптера RecyclerView нужно присвоить ViewPager'у уникальный идентификатор. Я сделал так:
holder.viewPager.setId(position + 1);
Внутренняя магия Андроида только так понимает, что пейджеры в каждом элементе списка таки разные.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы