ViewPager用FragmentPagerAdapter做适配器怎么动态删除指定页面
1个回答
2016-03-12
展开全部
方法一:已经可以从删除的地方回传删除的Fragment在List中的位置,所以更新适配器中的List,remove掉删除的。然后删除ViewPager缓存中对应的Fragment。再notifyDataSetChanged()
List<Fragment> fragments = fm.getFragments();
FragmentTransaction transaction = fm.beginTransaction();
// mDeleteCityArry是删除的Fragment的位置的数组
for (int i = 0; i < mDeleteCityArry.length; i++) {
mFragmentList.remove(mDeleteCityArry[i]);
//删除相应的缓存碎片。
transaction.remove(fragments.get(mDeleteCityArry[i]));
transaction.commit();
//重新设置适配器中的List
mAdapter.setList(mFragmentList);
mAdapter.notifyDataSetChanged();
}
方法二:其实和方法一类似,但是是删除所有ViewPager中缓存的Fragment。再删除mFragmentList中的所有内容,全部重建Fragment,重新设置适配器中的List。一了百了。
mForecasts = mforecastDao.getAllCity();
forecastSize=mForecasts.size();
List<Fragment> fragments = fm.getFragments();
FragmentTransaction transaction = fm.beginTransaction();
//把所有缓存碎片都删了。
for (Fragment childFragment : fm.getFragments()) {
transaction.remove(childFragment);
transaction.commit();
}
//再全部重新创建。
mFragmentList.clear();
for (int i = 0; i < forecastSize; i++) {
mFragmentList.add(OutterFragment.newInstance(mForecasts.get(i).getCity()));
}
//重新设置适配器中的List
mAdapter.setList(mFragmentList);
mAdapter.notifyDataSetChanged();
List<Fragment> fragments = fm.getFragments();
FragmentTransaction transaction = fm.beginTransaction();
// mDeleteCityArry是删除的Fragment的位置的数组
for (int i = 0; i < mDeleteCityArry.length; i++) {
mFragmentList.remove(mDeleteCityArry[i]);
//删除相应的缓存碎片。
transaction.remove(fragments.get(mDeleteCityArry[i]));
transaction.commit();
//重新设置适配器中的List
mAdapter.setList(mFragmentList);
mAdapter.notifyDataSetChanged();
}
方法二:其实和方法一类似,但是是删除所有ViewPager中缓存的Fragment。再删除mFragmentList中的所有内容,全部重建Fragment,重新设置适配器中的List。一了百了。
mForecasts = mforecastDao.getAllCity();
forecastSize=mForecasts.size();
List<Fragment> fragments = fm.getFragments();
FragmentTransaction transaction = fm.beginTransaction();
//把所有缓存碎片都删了。
for (Fragment childFragment : fm.getFragments()) {
transaction.remove(childFragment);
transaction.commit();
}
//再全部重新创建。
mFragmentList.clear();
for (int i = 0; i < forecastSize; i++) {
mFragmentList.add(OutterFragment.newInstance(mForecasts.get(i).getCity()));
}
//重新设置适配器中的List
mAdapter.setList(mFragmentList);
mAdapter.notifyDataSetChanged();
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询