官方英语原文地址:http://developer.android.com/reference/android/support/v4/view/PagerAdapter.html

(它是)基类,它提供适配器,该适配器能填充页面内容到ViewPager中。
你可能更喜欢使用它的特殊实现类,比如:FragmentPagerAdapter或FragmentStatePagerAdapter。

当你实现一个PageAdapter的时候,你至少必须要重载(override)下面几个方法:
·instantiateItem(ViewGroup, int)--实例化条目
·destroyItem(ViewGroup, int, Object)--销毁条目
·getCount()--获取条目数量
·isViewFromObject(View, Object)

PagerAdapter,比AdapterViews所使用的适配器,更常用。
在更新过程中,ViewPager使用回调(callbacks),来指示到哪一步了,而不是提供一套View直接回收的机制。
如果需要的话,PagerAdapter可以实现一种View回收机制,或者使用一个更加复杂的方法,来管理page view,
例如,Fragment的处理方式:每个页面都由它自己的Fragment来展现。

ViewPager都关联一个key对象,而不是直接与Views关联。
这个key用来跟踪并唯一标识指定的页面,它独立于其在适配器中的位置。
对PagerAdapter的startUpdate(ViewGroup)方法的一次调用,标志着ViewPager的页面内容即将改变。
随后,会调用若干次instantiateItem(ViewGroup, int)或destroyItem(ViewGroup, int, Object),
最后,会调用finishUpdate(ViewGroup),这意味着本次更新将要结束了。
等到finishUpdate返回时,与instantiateItem返回的key对象关联的view,应该被添加到其父控件ViewGroup中了,
而与传递给destroyItem这些key关联的view,应该被移除了。
isViewFromObject(View, Object)方法用于判断某个view是否与key对象关联。

一个简单的PagerAdapter,可以用page Views本身当为key对象;
创建并添加到ViewGroup中后,可以instantiateItem(ViewGroup, int)中返回它;
对应的destroyItem(ViewGroup, int, Object)的实现,从父控件ViewGroup中删除它;
isViewFromObject(View, Object)可以这样实现:return view == object;.

PagerAdapter支持数据集(data set)的变更更新。
但数据集变更,必须发生在主线程中,并且最后要调用notifyDataSetChanged()方法,
这点与从BaseAdapter派生的AdapterView的适配器,很相似。
数据集的改变,可以包含pages的添加,删除或位置改变。
ViewPager将保持当前的页面处于active状态,它由实现了getItemPosition(Object)方法的适配器提供。

public Object instantiateItem (ViewGroup container, int position)
在指定的位置创建页面;适配器负责添加view到这个容器中,然而它只保证在finishUpdate(ViewGroup)返回时才完成。
public void destroyItem (ViewGroup container, int position, Object object)
删除指定位置的页面;适配器负责从view容器中删除view,然而它只保证在finishUpdate(ViewGroup)返回时才完成。
public abstract int getCount ()
返回可用的view的数量。
public abstract boolean isViewFromObject (View view, Object object)
判断页面是否跟指定的key对象关联,key对象由instantiateItem(ViewGroup, int)返回。

更多相关文章

  1. (Android学习之路)Android中listView结合自定义适配器,并实现item
  2. android ndk返回String(字符串)
  3. Android(安卓)共享元素动画,返回时会闪一下的问题
  4. RecyclerView 中 item 点击事件的优化
  5. Android(安卓)安卓WebView套壳H5网页 手机返回键问题(过滤二级页
  6. Android(安卓)实现适配器中的子控件与Activity通信
  7. 写一个简单的Android计算器应用
  8. java中采用Pull解析器对XML文件进行解析
  9. 关于Android中ToolBar返回

随机推荐

  1. 如何解决mysql insert乱码的问题
  2. MySQL存储过程及常用函数代码解析
  3. MySQL 5.7.27下载安装配置的详细教程
  4. MySQL8.0.20压缩版本安装教程图文详解
  5. MySQL 如何查找并删除重复记录的实现
  6. 浅析MySQL 备份与恢复
  7. MySQL 4种常用的主从复制架构
  8. 简述MySQL InnoDB存储引擎
  9. 如何优雅、安全的关闭MySQL进程
  10. 详解MySQL8.0​ 字典表增强