PagerAdapter API 译文

本文详细介绍了ViewPager中的PagerAdapter基类及其核心方法实现。PagerAdapter为ViewPager提供页面内容填充适配,包括instantiateItem、destroyItem等关键方法说明。同时,探讨了PagerAdapter与AdapterViews适配器的不同之处。
摘要由CSDN通过智能技术生成

 

 

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

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

·        instantiateItem(ViewGroup, int)

·        destroyItem(ViewGroup, int, Object)

·        getCount()

·        isViewFromObject(View, Object)

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

ViewPager不是直接与Views关联而是与一个key对象关联起来。这个key对象用来记录并且在这个适配器中唯一地标示某个页面。而这个唯一性与页面所处的位置无关。如果ViewPager的页面内容改变,那么系统就会调用这个ViewPager所对应的PagerAdapterstartUpdate(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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值