public abstract class PagerAdapter
extends Object
java.lang.Object | |
↳ | android.support.v4.view.PagerAdapter |
Known Direct Subclasses |
基类提供适配器来填充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 |
|
---|---|
From class 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. |