Android RecyclerView, который находится во Фрагменте, который находится в ViewPager, не перезагружает/обновляет представления, если установлено setOffscreenPageLimit




android tabs (3)

FragmentStatePagerAdapter сохраняет состояние и уничтожает фрагменты; он также восстанавливает состояние, когда фрагменты воссозданы, что восстанавливает состояние recycleview (положение прокрутки).

От конечного пользователя это то же поведение, что и использование FragmentPageAdapter который сохраняет фрагменты в памяти.

Это нормальное и обычно желаемое поведение.

У меня есть RecyclerView в Fragment который снова находится в ViewPager , когда я ViewPager между страницами ViewPager , я вижу, что onDetach of Fragment , но по какой-то причине RecyclerView по-прежнему присутствует в этой конкретной позиции для Fragment в ViewPager , даже положение прокрутки RecyclerView сохраняется, когда я возвращаюсь к отдельному фрагменту.

Я использую FragmentStatePagerAdapter для ViewPager и я возвращаю POSITION_NONE из getItemPosition() но это не влияет.

Пожалуйста, помогите мне понять проблему здесь.


Answer #1

Попробуйте это.

1) MyAdapter extends FragmentStatePagerAdapter

2) Установите Adapter из фрагмента с помощью getChildFragmentManager() например: mViewPager.setAdapter(new MyAdapter(getChildFragmentManager(), getActivity(), this))

3) Из метода ViewPagerFrgment Override setUserVisibleHint

@Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        if (isVisibleToUser) {
            //Update Recyclerview
        } else {

        }
    }





android-recyclerview