ViewPager+Fragmnet组合动态添加和删除Fragment
最近项目需求需要动态的去刷新ViewPager
PagerAdapter mPagerAdapter = new PagerAdapter(getChildFragmentManager(), arrays); mPagerAdapter.notifyDataSetChanged();
然而notifyDataSetChanged();并不起作用
- 查阅相关资料,继承FragmentStatePagerAdapter才能做到动态添加和删除
private class PagerAdapter extends FragmentStatePagerAdapter {
private String[] title;
PagerAdapter(FragmentManager fm, String[] title) {
super(fm);
this.title = title;
}
@Override
public CharSequence getPageTitle(int position) {
return title[position];
}
@Override
public Fragment getItem(int position) {
return mPagerFragmentList.get(position);
}
@Override
public int getCount() {
return title.length;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
//解决viewpager重复加载数据
}
@Override
public int getItemPosition(Object object) {
//实现重新加载需返回此值
return PagerAdapter.POSITION_NONE;
}
}
- 完整代码在初始化之前 先移除View,然后在创建PagerAdapter,在setAdapter
mPager.removeAllViews();
mPager.removeAllViewsInLayout();
PagerAdapter mPagerAdapter = new PagerAdapter(getChildFragmentManager(), arrays);
mPager.setAdapter(mPagerAdapter);
mTab.setupWithViewPager(mPager);