Вертикальный адаптер Viewpager не обновляется внутри горизонтального Viewpager - PullRequest
0 голосов
/ 14 октября 2018

У меня есть горизонтальный просмотрщик с FragmentStatePagerAdapter, и каждый элемент фрагмента содержит вертикальный просмотрщик с FragmentStatePagerAdapter.Я хочу обновить все внутри обоих пейджеров.Итак, я использую notifyDataSetChanged () на горизонтальном viewpager, который как-то запускает notifyDataSetChanged () вертикального viewpager.Я вижу новый обновленный контент на обоих окнах просмотра, но элементы, видимые пользователю, не обновляются.

Например, 1 2 3 4 5 6 7 8 9

Если я 'm на элементе «3» в горизонтальном видоискателе, затем обновляется только 6,7,8,9 страниц, и то же самое касается вертикального видового пейджера.Похоже, что фрагменты, которые не находятся в памяти, обновляются только.

Я уже использую "POSITION_NONE" на обоих адаптерах.

Любая помощь приветствуется.

Обновление:

HorizontalAdapter

public class HorizontalAdapter extends FragmentStatePagerAdapter {

private ArrayList<HorizontalCardFragment> mFragmentsList;

public HorizontalAdapter(ArrayList<HorizontalCardFragment> fragmentsList, FragmentManager fm) {
    super(fm);
    mFragmentsList = fragmentsList;
}


@Override
public int getCount() {
    return mFragmentsList.size();
}

@Override
public Fragment getItem(int position) {
    return mFragmentsList.get(position);
}

@Override
public Object instantiateItem(ViewGroup container, int position) {
    Object fragment = super.instantiateItem(container, position);
    mFragmentsList.set(position, (HorizontalCardFragment) fragment);
    return fragment;
}


@Override
public int getItemPosition(@NonNull Object object) {
    return POSITION_NONE;
}
}

VerticalAdapter

открытый класс VerticalAdapter extends FragmentPagerAdapter {

private List<VerticalCardFragment> fragments;


public VerticalAdapter(FragmentManager fm, List<VerticalCardFragment> fragments) {
    super(fm);
    this.fragments = fragments;
}


@Override
public int getCount() {
    return fragments.size();
}

@Override
public Fragment getItem(int position) {
    return fragments.get(position);
}


@Override
public int getItemPosition(@NonNull Object object) {
    return POSITION_NONE;
}
}
...