Most visited

Recently visited

PagerAdapter

public abstract class PagerAdapter
extends Object

java.lang.Object
   ↳ android.support.v4.view.PagerAdapter
Known Direct Subclasses


基类提供适配器来填充ViewPager内部的页面。 你很可能想要使用更具体的实现,如FragmentPagerAdapterFragmentStatePagerAdapter

当您实现PagerAdapter时,您必须至少覆盖以下方法:

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会保持当前页面处于活动状态。

Summary

Constants

int POSITION_NONE

int POSITION_UNCHANGED

Public constructors

PagerAdapter()

Public methods

void destroyItem(View container, int position, Object object)

此方法已弃用。 使用destroyItem(ViewGroup, int, Object)

void destroyItem(ViewGroup container, int position, Object object)

删除给定位置的页面。

void finishUpdate(View container)

此方法已弃用。 使用finishUpdate(ViewGroup)

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)

此方法已弃用。 使用instantiateItem(ViewGroup, int)

abstract boolean isViewFromObject(View view, Object object)

确定页面视图是否与 instantiateItem(ViewGroup, int)返回的特定键对象相关联。

void notifyDataSetChanged()

如果支持此适配器的数据发生更改并且关联的视图应该更新,应该由应用程序调用此方法。

void registerDataSetObserver(DataSetObserver observer)

注册观察者以接收与适配器数据更改有关的回调。

void restoreState(Parcelable state, ClassLoader loader)

还原与此适配器及其先前由 saveState()保存的页面相关的任何实例状态。

Parcelable saveState()

如果需要重建当前UI状态,请保存与此适配器及其应恢复的页面关联的任何实例状态。

void setPrimaryItem(ViewGroup container, int position, Object object)

被调用以通知适配器当前哪个项目被认为是“主要”,这是向用户显示的当前页面。

void setPrimaryItem(View container, int position, Object object)

此方法已弃用。 使用setPrimaryItem(ViewGroup, int, Object)

void startUpdate(ViewGroup container)

当所显示页面的变化即将开始时调用。

void startUpdate(View container)

此方法已弃用。 使用startUpdate(ViewGroup)

void unregisterDataSetObserver(DataSetObserver observer)

从与适配器数据更改相关的回调中注销观察者。

Inherited methods

From class java.lang.Object

Constants

POSITION_NONE

int POSITION_NONE

常量值:-2(0xfffffffe)

POSITION_UNCHANGED

int POSITION_UNCHANGED

常量值:-1(0xffffffff)

Public constructors

PagerAdapter

PagerAdapter ()

Public methods

destroyItem

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).

destroyItem

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).

finishUpdate

void finishUpdate (View container)

此方法已弃用。
使用finishUpdate(ViewGroup)

在所示页面中的更改完成时调用。 此时,您必须确保所有页面实际上已根据需要添加或从容器中移除。

Parameters
container View: The containing View which is displaying this adapter's page views.

finishUpdate

void finishUpdate (ViewGroup container)

在所示页面中的更改完成时调用。 此时,您必须确保所有页面实际上已根据需要添加或从容器中移除。

Parameters
container ViewGroup: The containing View which is displaying this adapter's page views.

getCount

int getCount ()

返回可用的视图数量。

Returns
int

getItemPosition

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.

getPageTitle

CharSequence getPageTitle (int position)

这个方法可以被ViewPager调用来获得一个标题字符串来描述指定的页面。 此方法可能会返回null,表示此页面没有标题。 默认实现返回null。

Parameters
position int: The position of the title requested
Returns
CharSequence A title for the requested page

getPageWidth

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

instantiateItem

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.

instantiateItem

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.

isViewFromObject

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

notifyDataSetChanged

void notifyDataSetChanged ()

如果支持此适配器的数据发生更改并且关联的视图应该更新,应该由应用程序调用此方法。

registerDataSetObserver

void registerDataSetObserver (DataSetObserver observer)

注册观察者以接收与适配器数据更改有关的回调。

Parameters
observer DataSetObserver: The DataSetObserver which will receive callbacks.

restoreState

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

saveState

Parcelable saveState ()

如果需要重建当前UI状态,请保存与此适配器及其应恢复的页面关联的任何实例状态。

Returns
Parcelable Saved state for this adapter

setPrimaryItem

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).

setPrimaryItem

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).

startUpdate

void startUpdate (ViewGroup container)

当所显示页面的变化即将开始时调用。

Parameters
container ViewGroup: The containing View which is displaying this adapter's page views.

startUpdate

void startUpdate (View container)

此方法已弃用。
使用startUpdate(ViewGroup)

当所显示页面的变化即将开始时调用。

Parameters
container View: The containing View which is displaying this adapter's page views.

unregisterDataSetObserver

void unregisterDataSetObserver (DataSetObserver observer)

从与适配器数据更改相关的回调中注销观察者。

Parameters
observer DataSetObserver: The DataSetObserver which will be unregistered.

Hooray!