我有一个带有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”。
任何帮助将不胜感激。
更新:
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扩展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;
}
}