ViewPage动态删除页面

来源:互联网 发布:淘宝拍下返现送小礼物 编辑:程序博客网 时间:2024/05/17 20:34

最近项目中要用到在ViewPage中删除页面,研究了两天,网上寻找了各种解决方法,最终找到了,总结归纳就是:
一:在适配器中重写getItemPosition方法
二:在适配器中重写destroyItem方法

在PagerAdapter的getItemPosition中默认总是返回 POSITION_UNCHANGED,代表数据没有改变,因为我们删除了页面,所有要重写此方法返回 POSITION_NONE,代表适配器已经不存在这个item了。下面是getItemPosition的源码分析截图。大伙可以看看什么意思

这里写图片描述

所以重写这个方法就是

@Override    public int getItemPosition(Object object) {        return POSITION_NONE;    }

查看PagerAdapter中destroyItem的方法,如下图

这里写图片描述

这里写图片描述

从源码中可以看到,当删除页面时,调用这个方法进行删除。
参数container是父类页面,container.removeView进行删除操作,object就是要被删除的的view,所以重写这个方法就是

@Override    public void destroyItem(View collection, int position, Object o) {        View view = (View) o;        ((ViewPager) collection).removeView(view);        view = null;    }

重写了这两个方法就可以在ViewPage中删除view了。

viewPage删除view的DEMO下载地址:http://download.csdn.net/detail/a_person_alone/9618827

0 0