Android Viewpager如何动态删除片段?
几天来,我一直在努力在我的应用程序中构建允许用户从Viewpager中删除页面/片段的功能,我尝试将FragmentPageAdapter更改为FragmentStatePageAdapter,并将我的Android Viewpager如何动态删除片段?,android,android-fragments,android-viewpager,fragmentpageradapter,notifydatasetchanged,Android,Android Fragments,Android Viewpager,Fragmentpageradapter,Notifydatasetchanged,几天来,我一直在努力在我的应用程序中构建允许用户从Viewpager中删除页面/片段的功能,我尝试将FragmentPageAdapter更改为FragmentStatePageAdapter,并将我的getItemPosition()改写为return POSITION\u NONE但是这仍然不允许我在调用fragments.remove(第页)时动态删除片段 以前有人成功地做到过吗?看起来它应该是非常简单,但它没有,下面是我的片段适配器,任何帮助都会有很大帮助,谢谢 class MyPage
getItemPosition()
改写为return POSITION\u NONE代码>但是这仍然不允许我在调用fragments.remove(第页)时动态删除片段代码>
以前有人成功地做到过吗?看起来它应该是非常简单,但它没有,下面是我的片段适配器,任何帮助都会有很大帮助,谢谢
class MyPageAdapter extends FragmentStatePagerAdapter {
private List<Fragment> fragments;
public MyPageAdapter(FragmentManager fm, List<Fragment> fragments) {
super(fm);
this.fragments = fragments;
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
@Override
public Fragment getItem(int position) {
return this.fragments.get(position);
}
@Override
public float getPageWidth(int position) {
if (position == 0) {
return (0.75f);
} else {
return (1f);
}
}
@Override
public CharSequence getPageTitle(int position) {
MyFragment theFragment = (MyFragment) this.fragments.get(position);
return theFragment.returnTitle();
}
@Override
public int getCount() {
return this.fragments.size();
}
}
类MyPageAdapter扩展了FragmentStatePagerAdapter{
私有列表片段;
公共MyPageAdapter(FragmentManager fm,列出片段){
超级(fm);
this.fragments=片段;
}
@凌驾
public int getItemPosition(对象){
返回位置\无;
}
@凌驾
公共片段getItem(int位置){
返回此.fragments.get(位置);
}
@凌驾
公共浮点getPageWidth(整型位置){
如果(位置==0){
返回(0.75华氏度);
}否则{
返回(1f);
}
}
@凌驾
公共字符序列getPageTitle(int位置){
MyFragment theFragment=(MyFragment)this.fragments.get(position);
返回片段。returnTitle();
}
@凌驾
public int getCount(){
返回此.fragments.size();
}
}
用杰克·沃顿的。它还有一个具有此功能的开源示例应用程序(从选项菜单中添加和删除片段)
把这个放到你的适配器中:
public void setCount(int count) {
if (count > 0 && count <= 10) {
mCount = count;
notifyDataSetChanged();
}
}
我已经决定破坏活动并重新启动它,这可能是实现我所追求的目标的最肮脏的方法,但它起作用了,我在这一点上浪费了足够多的生命,哈哈
public void setCount(int count) {
if (count > 0 && count <= 10) {
mCount = count;
notifyDataSetChanged();
}
}
if (mAdapter.getCount() < 10) {
mAdapter.setCount(mAdapter.getCount() + 1);
mIndicator.notifyDataSetChanged();
}
if (mAdapter.getCount() > 1) {
mAdapter.setCount(mAdapter.getCount() - 1);
mIndicator.notifyDataSetChanged();
}