垂直Viewpager适配器在水平Viewpager中无法正确刷新

时间:2018-10-14 17:15:46

标签: android android-fragments android-viewpager fragmentstatepageradapter

我有一个带有FragmentStatePagerAdapter的水平Viewpager,每个片段项目都包含一个带有FragmentStatePagerAdapter的Vertical Viewpager。我想刷新两个viewpagers中的所有内容。因此,我在水平viewpager上使用notifyDataSetChanged(),它以某种方式触发了垂直viewpager的notifyDataSetChanged()。我可以在两个浏览器上看到新的更新内容,但用户可见的项目不会刷新。

例如 1 2 3 4 5 6 7 8 9

如果我在水平viewpager的“ 3”项目上,则仅刷新6,7,8,9页,垂直viewpager也是如此。看起来好像不在内存中的片段只会被刷新。

我已经在两个适配器上都使用了“ POSITION_NONE”。

任何帮助将不胜感激。

更新:

Horizo​​ntalAdapter

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扩展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;
}
}

0 个答案:

没有答案