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);