问题描述
删除 pagerAdapter
中的项目非常简单,如下所示:
public void removeLastAddedPage(){
int lastIndex = viewList.size() - 1;
viewList.remove(lastIndex);
//do notification of change
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
但是,每当我这样做时,我都会遇到异常。在删除最后添加的页面之前,我将 ViewPager
到 setCurrentItem
切换到它之前的页面。
如果我删除 getItemPosition
,我不会得到异常,但我不相信 pagerAdapter
实际上删除了该项目。
这是扩展类:
public class MyPagerAdapter extends PagerAdapter {
private int maxPage = 0;
public List<View> viewList = new ArrayList<View>();
public void changePage(int i){
if(maxPage + i< 0) {
maxPage = 0;
} else {
maxPage = maxPage + i;
}
notifyDataSetChanged();
}
public void addPage(ViewGroup view){
viewList.add(maxPage,view);
changePage(1);
}
public void removeLastAddedPage(){
int lastIndex = viewList.size() - 1;
viewList.remove(lastIndex);
changePage(-1);
}
@Override
public void destroyItem(View arg0,int arg1,Object arg2) {
((ViewPager) arg0).removeView(viewList.get(arg1));
}
@Override
public void finishUpdate(View arg0) {
}
@Override
public int getCount() {
return maxPage;
}
@Override
public Object instantiateItem(View arg0,int arg1) {
((ViewPager) arg0).addView(viewList.get(arg1),0);
return viewList.get(arg1);
}
@Override
public boolean isViewFromObject(View arg0,Object arg1) {
return arg0 == (arg1);
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)