public class PagerAdapter extends FragmentStatePagerAdapter{
public PagerAdapter(FragmentManager fm) {
super(fm);
// TODO Auto-generated constructor stub
}
@Override
public Fragment getItem(int i) {
// TODO Auto-generated method stub
return mListOfImagePanel.get(i);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return mListOfImagePanel.size();
}
@Override
public CharSequence getPageTitle(int position) {
// TODO Auto-generated method stub
doOnce();
return mListOfImagePanelNames.get(position);
}
}
}
这是我用来删除片段的方法
private void deleteImagePanelFromDrawerLayout(int whichPanel){
mListOfImagePanel.remove(whichPanel); // This is the ArrayList of fragment
mListOfImagePanelNames.remove(whichPanel); // Don't care about this one
mImagePanelSaveDatas.remove(whichPanel); // Don't care about this one
adapter.notifyDataSetChanged(); // PagerAdapter
mFlip.setOffscreenPageLimit(mListOfImagePanel.size()); //ViewPager
}
问题是,使用该方法似乎没有发生任何事情,我选择销毁的片段上没有 OnDestroy 调用。
到目前为止唯一有效的方法是 getItemPosition 技巧,但我不能使用它,因为它会破坏所有片段并重新创建它们,并且由于我的片段具有动态内容,因此删除所有内容并重新创建效率不高。
那么有没有办法专门从片段的 ArrayList 中删除特定的片段。并有效地更新适配器?