本基类是ViewPager提供填充页面内容的适配器(数据与显示内容之间桥梁)。通常,人们不是直接使用本基类的,而是使用这个基类的实现:FragmentPagerAdapter   或者FragmentStatePagerAdapter

但是,当你不得不实现一个PageAdapter的时候,你至少要实现下面的几个方法:

·        instantiateItem(ViewGroup, int)   

    /**这个方法,return一個对象,这个对象表明了PagerAdapter适配器选择哪个对象放在当前的ViewPager中 **/ 

·        destroyItem(ViewGroup, int, Object)

    /**这个方法,是从ViewGroup中移出当前View**/

·        getCount()

    /**这个方法,是获取当前窗体界面数**/

·        isViewFromObject(View, Object)

    /**这个方法,在帮助文档中原文是could be implemented as return view == object, 也就是用于判断是否由对象生成界面**/

PagerAdapter与AdapterViews所使用的适配器相比,功能会更多。AdapterViews所使用的适配器直接提供一套View的回收机制,而PagerAdapter却提供了在View更新过程中每一个步骤所对应的回调函数。PagerAdapter可以按照需要自定义View的回收机制或者使用一套更加复杂的用来管理page view的方法,比如说可以将Fragment的管理机制用于page view的管理机制当中。

ViewPager不是直接与Views关联而是与一个key对象关联起来。这个key对象用来记录并且在这个适配器中唯一地标示某个页面。而这个唯一性与页面所处的位置无关。如果ViewPager的页面内容改变,那么系统就会调用这个ViewPager所对应的PagerAdapter的startUpdate(ViewGroup)方法。之后,系统会根据页面中的内容,调用若干次instantiateItem(ViewGroup, int) 或者destroyItem(ViewGroup, int, Object)方法,最后,在这次更新结束之前,系统会调用 finishUpdate(ViewGroup)方法。在finishUpdate结束之前 , instantiateItem和 destroyItem方法会分别完成将key objects所对应的view对象加载到其父ViewGroup中和删除之。而isViewFromObject(View, Object)方法可以用于判断某个view是否对应某个key对象。其中,我们可以简单地将Page Views本身作为key objects,我们可以在instantiateItem(ViewGroup, int)创建view对象和将这个对象添加到父ViewGroup中,并且最后将这个view对象作为这个方法的返回值。同样地,destroyItem(ViewGroup, int, Object)也可以类似操作。相对于地,isViewFromObject(View, Object) 可以这样子实现:

return view == object;.

PagerAdapter支持数据集更新。其中,Data set改变必须要发生在主线程中,并且最后必须要调用notifyDataSetChanged()方法。这点与AdapterView adapters很相似。数据集的改变,可以实时地更新页面。假如,PagerAdapter实现了getItemPosition(Object)方法,那么ViewPager可以保持当前的页面处于状态。

本文转自:http://blog.csdn.net/kaiwii/article/details/7821846

Android PagerAdapter的更多相关文章

  1. Android PagerAdapter的用法

    转http://blog.csdn.net/look85/article/details/8563906 在写这个之前,真心需要吐槽一下…关于Android开发中,PageAdapter的用法在网上能 ...

  2. Android成长日记-使用PagerAdapter实现页面切换

    Tip:此方式可以实现页面切换 1. 创建view1.xml,view2.xml,view3.xml,main.xml 在main.xml中创建 <android.support.v4.view ...

  3. Android Tab -- 使用ViewPager、PagerAdapter来实现

    原文地址:http://blog.csdn.net/crazy1235/article/details/42678877 效果:滑动切换,自动切换. 代码:https://github.com/ldb ...

  4. Android:ViewPager适配器PagerAdapter的使用

    PageAdapter是一个抽象类,直接继承于Object,导入包android.support.v4.view.PagerAdapter即可使用. 要使用PagerAdapter, 首先要继承Pag ...

  5. Android开发UI之ViewPager及PagerAdapter

    ViewPager,官网链接--http://developer.android.com/reference/android/support/v4/view/ViewPager.html ViewPa ...

  6. Android ViewPager PagerAdapter 图片轮播

    ViewPager类直接继承了ViewGroup类,所有它是一个容器类,可以在其中添加其他的View类. ViewPager类需要一个PagerAdapter适配器类给它提供数据. ViewPager ...

  7. 【Android进阶】关于PagerAdapter的使用方法的总结

    PagerAdapter简介 PagerAdapter是android.support.v4包中的类,它的子类有FragmentPagerAdapter, FragmentStatePagerAdap ...

  8. Android开发技巧——PagerAdapter再简单的包

    再次内容View的ViewPager该适配器PagerAdapter简包,支持List数据与SparseArray数据.随着更新的浏览功能. 首先,首先贴上顶部抽象类代码: /* * Date: 14 ...

  9. Android开发技巧——PagerAdapter的再次简单封装

    这次再对内容为View的ViewPager的适配器PagerAdapter进行简单的封装,支持List数据和SparseArray的数据,带更新视图功能. 首先,先贴上最上面的抽象类代码: /* * ...

随机推荐

  1. PHP学习笔记——上传文件到服务端的文件夹下

    环境 开发包:appserv-win32-2.5.10 服务器:Apache2.2 数据库:phpMyAdmin 语言:php5,java 平台:windows 10 需求 编写一个PHP脚本页面,可 ...

  2. Linux中的安装神器--yum源安装

    linux配置yum源 一.修改yum的配置文件     /etc/yum.repos.d/xxx.repo          1.进入yum配置文件目录        # cd /etc/yum.r ...

  3. mysql 数据库还原出错ERROR:Unknown command '\' mysql中断

    其实造成这个问题的原因还是由于编码的问题,网站数据库设置的是gbk 的,mysql默认是gbk:但是在导出数据的时候导出了utf8的sql文件,不管我如何重新导入,在连接数据库后使用set names ...

  4. C/C++代码检视实例

    相关文章链接如下: 微软过桥问题与测试人员素养 等价类分法 新解 测试用例设计中的NP难题 90%程序员写不出无BUG的二分查找程序? C/C++代码检视要点 4.1             代码检视 ...

  5. Understanding Manycore Scalability of File Systems

    多核场景下,不同文件系统,文件操作的性能评估.

  6. 修改ECSHOP,支持图片云存储化(分离到专用图片服务器)

    为了提高页面加载速度和适应中国复杂的网络环境,我决定把所有商品图片都分离到专业的云存储服务器上,具有CDN加速功能. 首先,生成一个域名 img.xxxx.com 并映射到自己的云存储别名,然后把全部 ...

  7. Rsync+Inotify-tools实现数据实时同步

    inotify是一种强大的,细粒度的,异步文件系统时间监控机制,它可以替代crond实现与rsync的触发式文件同步,从而监控文件系统中添加,删除,修改,移动等细粒事件,从LINUX 2.6.13起, ...

  8. 如何配置SSH Keys登录

    SSH Keys简介: 使用SSH Keys的登录远程虚拟云主机的方式比单独使用密码登录更加安全,简单的密码很可能被暴力破解.而目前来看采用长度大于1024位的RSA加密算法,几乎是不可能被破解的.S ...

  9. pymssql 安装测试

    平台 : windows 7 32位 数据库 : SQLSERVER 2008 python 2.7  & pymssql模块 数据库和python 等模块安装说明省略 以下贴出测试代码: 单 ...

  10. [转]利用/*+Ordered*/提高查询性能

    [转]利用/*+Ordered*/提高查询性能 2009-02-06 10:46:27|  分类: Oracle |  标签: |字号大中小 订阅  消耗在准备利用Oracle执行计划机制提高查询性能 ...