ViewPage动态删除页面

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

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

ViewPage动态删除页面_第1张图片

所以重写这个方法就是

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

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

ViewPage动态删除页面_第2张图片

ViewPage动态删除页面_第3张图片

从源码中可以看到,当删除页面时,调用这个方法进行删除。
参数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

你可能感兴趣的:(Android)