android - 从 AdapterPager 结果中的当前视图中删除最近的项目到异常错误
问题描述
删除项目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;
}
}
解决方案
推荐阅读
- c++ - 查找数组中第一个最小元素和最后一个最大元素之间的算术平均值
- javascript - 如何使用Node从POST请求中获取具有相同名称的复选框的值?
- php - SQL 查询不等于运算符不工作,使用 JOIN
- c++ - 难以找到奇数的立方和
- ms-access - 如何在 Access 16 (Office 365) 的 SQL 编辑窗口中更改字体大小?
- fullcalendar - fullcalendar selectHelper 在调整到受限区域时隐藏
- javascript - 通过图层传播悬停事件?
- azure - Azure 外部负载均衡器和 Kubernetes 集群
- arrays - SAS,数组代码,两个索引,删除记录
- c++ - UDP客户端无法向服务器发送消息但可以接收