public abstract class PagerAdapter
extends Object
| java.lang.Object | |
| android.support.v4.view.PagerAdapter | |
| |
基类提供适配器来填充ViewPager内部的页面。 你很可能想要使用更具体的实现,如FragmentPagerAdapter或FragmentStatePagerAdapter 。
当您实现PagerAdapter时,您必须至少覆盖以下方法:
instantiateItem(ViewGroup, int)destroyItem(ViewGroup, int, Object)getCount()isViewFromObject(View, Object)PagerAdapter比用于AdapterViews的适配器更普遍。 ViewPager不是直接提供View回收机制,而是使用回调来指示更新期间采取的步骤。 如果需要,PagerAdapter可以实现View回收的一种形式,或者使用更复杂的方法来管理页面视图,例如每个页面由其自己的Fragment表示的Fragment事务。
ViewPager将每个页面与一个关键对象相关联,而不是直接使用Views。 此键用于跟踪和唯一标识给定页面,而与其在适配器中的位置无关。 对PagerAdapter方法startUpdate(ViewGroup)表明startUpdate(ViewGroup)的内容即将更改。 destroyItem(ViewGroup, int, Object)将会有一个或多个对instantiateItem(ViewGroup, int)和/或destroyItem(ViewGroup, int, Object)呼叫,并且更新的结束将通过对finishUpdate(ViewGroup)的呼叫来发信号通知。 到时候finishUpdate回报与返回键对象相关的意见instantiateItem应该被添加到父ViewGroup中传递给这些方法,并传递给钥匙相关的意见destroyItem应该被删除。 方法isViewFromObject(View, Object)标识页面视图是否与给定的键对象相关联。
一个非常简单的PagerAdapter可以选择使用页面Views自己作为关键对象,在创建后将它们从instantiateItem(ViewGroup, int)返回并将它们添加到父ViewGroup中。 匹配的destroyItem(ViewGroup, int, Object)实现将从父视图组中删除视图, isViewFromObject(View, Object)可以实现为return view == object; 。
PagerAdapter支持数据集更改。 数据集更改必须发生在主线程上,并且必须以notifyDataSetChanged()的调用结束,类似于从BaseAdapter派生的AdapterView适配器。 数据集更改可能涉及添加,删除或更改位置的页面。 只要适配器实现方法getItemPosition(Object) ,ViewPager会保持当前页面处于活动状态。
常量(Constants) |
|
|---|---|
int |
POSITION_NONE |
int |
POSITION_UNCHANGED |
Public constructors |
|
|---|---|
PagerAdapter() |
|
公共方法(Public methods) |
|
|---|---|
void |
destroyItem(View container, int position, Object object) 此方法已弃用。 使用 |
void |
destroyItem(ViewGroup container, int position, Object object) 删除给定位置的页面。 |
void |
finishUpdate(View container) 此方法已弃用。 使用 |
void |
finishUpdate(ViewGroup container) 在所示页面中的更改完成时调用。 |
abstract int |
getCount() 返回可用的视图数量。 |
int |
getItemPosition(Object object) 当主视图试图确定某个项目的位置是否已更改时调用。 |
CharSequence |
getPageTitle(int position) 这个方法可以被ViewPager调用来获得一个标题字符串来描述指定的页面。 |
float |
getPageWidth(int position) 以(0.f-1.f)的ViewPager测量宽度的百分比形式返回给定页面的比例宽度。 |
Object |
instantiateItem(ViewGroup container, int position) 创建给定位置的页面。 |
Object |
instantiateItem(View container, int position) 此方法已弃用。 使用 |
abstract boolean |
isViewFromObject(View view, Object object) 确定页面视图是否与 |
void |
notifyDataSetChanged() 如果支持此适配器的数据发生更改并且关联的视图应该更新,应该由应用程序调用此方法。 |
void |
registerDataSetObserver(DataSetObserver observer) 注册观察者以接收与适配器数据更改有关的回调。 |
void |
restoreState(Parcelable state, ClassLoader loader) 还原与此适配器及其先前由 |
Parcelable |
saveState() 如果需要重建当前UI状态,请保存与此适配器及其应恢复的页面关联的任何实例状态。 |
void |
setPrimaryItem(ViewGroup container, int position, Object object) 被调用以通知适配器当前哪个项目被认为是“主要”,这是向用户显示的当前页面。 |
void |
setPrimaryItem(View container, int position, Object object) 此方法已弃用。 使用 |
void |
startUpdate(ViewGroup container) 当所显示页面的变化即将开始时调用。 |
void |
startUpdate(View container) 此方法已弃用。 使用 |
void |
unregisterDataSetObserver(DataSetObserver observer) 从与适配器数据更改相关的回调中注销观察者。 |
继承方法(Inherited methods) |
|
|---|---|
java.lang.Object
|
|
int POSITION_NONE
常量值:-2(0xfffffffe)
int POSITION_UNCHANGED
常量值:-1(0xffffffff)
PagerAdapter ()
void destroyItem (View container, int position, Object object)
此方法已弃用。
使用destroyItem(ViewGroup, int, Object)
删除给定位置的页面。 适配器负责从容器中移除视图,但它只能确保在从finishUpdate(View)返回时完成finishUpdate(View) 。
| 参数(Parameters) | |
|---|---|
container |
View: The containing View from which the page will be removed. |
position |
int: The page position to be removed. |
object |
Object: The same object that was returned by instantiateItem(View, int). |
void destroyItem (ViewGroup container, int position, Object object)
删除给定位置的页面。 适配器负责从容器中移除视图,但它只能确保在从finishUpdate(ViewGroup)返回时完成finishUpdate(ViewGroup) 。
| 参数(Parameters) | |
|---|---|
container |
ViewGroup: The containing View from which the page will be removed. |
position |
int: The page position to be removed. |
object |
Object: The same object that was returned by instantiateItem(View, int). |
void finishUpdate (View container)
此方法已弃用。
使用finishUpdate(ViewGroup)
在所示页面中的更改完成时调用。 此时,您必须确保所有页面实际上已根据需要添加或从容器中移除。
| 参数(Parameters) | |
|---|---|
container |
View: The containing View which is displaying this adapter's page views. |
void finishUpdate (ViewGroup container)
在所示页面中的更改完成时调用。 此时,您必须确保所有页面实际上已根据需要添加或从容器中移除。
| 参数(Parameters) | |
|---|---|
container |
ViewGroup: The containing View which is displaying this adapter's page views. |
int getCount ()
返回可用的视图数量。
| 返回(Returns) | |
|---|---|
int |
|
int getItemPosition (Object object)
当主视图试图确定某个项目的位置是否已更改时调用。 返回POSITION_UNCHANGED如果给定项目的立场没有改变或POSITION_NONE ;如果该项目不再出现在适配器。
默认实现假设项目永远不会改变位置并始终返回 POSITION_UNCHANGED 。
| 参数(Parameters) | |
|---|---|
object |
Object: Object representing an item, previously returned by a call to instantiateItem(View, int). |
| 返回(Returns) | |
|---|---|
int |
object's new position index from [0, getCount()), POSITION_UNCHANGED if the object's position has not changed, or POSITION_NONE if the item is no longer present. |
CharSequence getPageTitle (int position)
这个方法可以被ViewPager调用来获得一个标题字符串来描述指定的页面。 此方法可能会返回null,表示此页面没有标题。 默认实现返回null。
| 参数(Parameters) | |
|---|---|
position |
int: The position of the title requested |
| 返回(Returns) | |
|---|---|
CharSequence |
A title for the requested page |
float getPageWidth (int position)
以(0.f-1.f)的ViewPager测量宽度的百分比形式返回给定页面的比例宽度。
| 参数(Parameters) | |
|---|---|
position |
int: The position of the page requested |
| 返回(Returns) | |
|---|---|
float |
Proportional width for the given page position |
Object instantiateItem (ViewGroup container, int position)
创建给定位置的页面。 适配器负责将视图添加到此处给出的容器,但它只能确保在从finishUpdate(ViewGroup)返回时完成此操作。
| 参数(Parameters) | |
|---|---|
container |
ViewGroup: The containing View in which the page will be shown. |
position |
int: The page position to be instantiated. |
| 返回(Returns) | |
|---|---|
Object |
Returns an Object representing the new page. This does not need to be a View, but can be some other container of the page. |
Object instantiateItem (View container, int position)
此方法已弃用。
使用instantiateItem(ViewGroup, int)
创建给定位置的页面。 适配器负责将视图添加到此处给出的容器,但它只能确保在从finishUpdate(ViewGroup)返回时完成此操作。
| 参数(Parameters) | |
|---|---|
container |
View: The containing View in which the page will be shown. |
position |
int: The page position to be instantiated. |
| 返回(Returns) | |
|---|---|
Object |
Returns an Object representing the new page. This does not need to be a View, but can be some other container of the page. |
boolean isViewFromObject (View view, Object object)
确定页面视图是否与instantiateItem(ViewGroup, int)返回的特定键对象相关联。 这个方法对于PagerAdapter正常运行是必需的。
| 参数(Parameters) | |
|---|---|
view |
View: Page View to check for association with object |
object |
Object: Object to check for association with view |
| 返回(Returns) | |
|---|---|
boolean |
true if view is associated with the key object object |
void notifyDataSetChanged ()
如果支持此适配器的数据发生更改并且关联的视图应该更新,应该由应用程序调用此方法。
void registerDataSetObserver (DataSetObserver observer)
注册观察者以接收与适配器数据更改有关的回调。
| 参数(Parameters) | |
|---|---|
observer |
DataSetObserver: The DataSetObserver which will receive callbacks. |
void restoreState (Parcelable state, ClassLoader loader)
还原与此适配器及其先前由 saveState()保存的页面相关的任何实例状态。
| 参数(Parameters) | |
|---|---|
state |
Parcelable: State previously saved by a call to saveState() |
loader |
ClassLoader: A ClassLoader that should be used to instantiate any restored objects |
Parcelable saveState ()
如果需要重建当前UI状态,请保存与此适配器及其应恢复的页面关联的任何实例状态。
| 返回(Returns) | |
|---|---|
Parcelable |
Saved state for this adapter |
void setPrimaryItem (ViewGroup container, int position, Object object)
被调用以通知适配器当前哪个项目被认为是“主要”,这是向用户显示的当前页面。
| 参数(Parameters) | |
|---|---|
container |
ViewGroup: The containing View from which the page will be removed. |
position |
int: The page position that is now the primary. |
object |
Object: The same object that was returned by instantiateItem(View, int). |
void setPrimaryItem (View container, int position, Object object)
此方法已弃用。
使用setPrimaryItem(ViewGroup, int, Object)
被调用以通知适配器当前哪个项目被认为是“主要”,这是向用户显示的当前页面。
| 参数(Parameters) | |
|---|---|
container |
View: The containing View from which the page will be removed. |
position |
int: The page position that is now the primary. |
object |
Object: The same object that was returned by instantiateItem(View, int). |
void startUpdate (ViewGroup container)
当所显示页面的变化即将开始时调用。
| 参数(Parameters) | |
|---|---|
container |
ViewGroup: The containing View which is displaying this adapter's page views. |
void startUpdate (View container)
此方法已弃用。
使用startUpdate(ViewGroup)
当所显示页面的变化即将开始时调用。
| 参数(Parameters) | |
|---|---|
container |
View: The containing View which is displaying this adapter's page views. |
void unregisterDataSetObserver (DataSetObserver observer)
从与适配器数据更改相关的回调中注销观察者。
| 参数(Parameters) | |
|---|---|
observer |
DataSetObserver: The DataSetObserver which will be unregistered. |