Android PageAdapter翻译
16lz
2021-01-23
介绍:ViewPager和PagerAdapter结合使用
public abstract classPagerAdapterextendsObject
java.lang.Object | |
↳ | android.support.v4.view.PagerAdapter |
Known Direct Subclasses FragmentPagerAdapter, FragmentStatePagerAdapter |
Class Overview
提供一个适配器用于填充ViewPager页面. 你很可能想要使用一个更加具体的实现, 例如:FragmentPagerAdapter
orFragmentStatePagerAdapter
.
当你实现一个PagerAdapter时,至少需要覆盖以下几个方法:
instantiateItem(ViewGroup, int)
destroyItem(ViewGroup, int, Object)
getCount()
isViewFromObject(View, Object)
PagerAdapter比AdapterView的使用更加普通.ViewPager使用回调函数来表示一个更新的步骤,而不是使用一个视图回收机制。在需要的时候pageradapter也可以实现视图的回收或者使用一种更为巧妙的方法来管理视图,比如采用可以管理自身视图的fragment。
viewpager不直接处理每一个视图而是将各个视图与一个键联系起来。这个键用来跟踪且唯一代表一个页面,不仅如此,该键还独立于这个页面所在adapter的位置。当pageradapter将要改变的时候他会调用startUpdate函数,接下来会调用一次或多次的instantiateItem或者destroyItem。最后在更新的后期会调用finishUpdate。当finishUpdate返回时 instantiateItem返回的对象应该添加到父ViewGroup destroyItem返回的对象应该被ViewGroup删除。methodisViewFromObject(View, Object)代表了当前的页面是否与给定的键相关联。 对于非常简单的pageradapter或许你可以选择用page本身作为键,在创建并且添加到viewgroup后instantiateItem方法里返回该page本身即可 destroyItem将会将该page从viewgroup里面移除。isViewFromObject方法里面直接可以返回view == object。 pageradapter支持数据集合的改变,数据集合的改变必须要在主线程里面执行,然后还要调用notifyDataSetChanged方法。和baseadapter非常相似。数据集合的改变包括页面的添加删除和修改位置。viewpager要维持当前页面是活动的,所以你必须提供getItemPosition方法。Summary
Constants | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
int | POSITION_NONE | ||||||||||
int | POSITION_UNCHANGED |
Public Constructors | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
PagerAdapter() |
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
void | destroyItem(ViewGroupcontainer, int position,Objectobject) 移除给定位置的页面 | ||||||||||
void | destroyItem(Viewcontainer, int position,Objectobject) 该方法已废弃.使用destroyItem(ViewGroup, int, Object)替代 | ||||||||||
void | finishUpdate(Viewcontainer) 该方法已废弃.使用finishUpdate(ViewGroup)代替 | ||||||||||
void | finishUpdate(ViewGroupcontainer) 当显示界面加载完成时调用该方法 | ||||||||||
abstract int | getCount() 返回可用的视图数量. | ||||||||||
int | getItemPosition(Objectobject) 如果item位置没有发生改变则返回POSITION_UNCHANGED如果发生了改变则返回POSITION_NONE | ||||||||||
CharSequence | getPageTitle(int position) 设置当前位置上的ViewPager的标题 | ||||||||||
float | getPageWidth(int position) 返回position位置测量的页面的宽高比例范围是(0.f-1.f] | ||||||||||
Object | instantiateItem(ViewGroupcontainer, int position) 根据指定的位置创建一个page item | ||||||||||
Object | instantiateItem(Viewcontainer, int position) 此方法已废弃,使用instantiateItem(ViewGroup, int)代替 | ||||||||||
abstract boolean | isViewFromObject(Viewview,Objectobject) Determines whether a page View is associated with a specific key object as returned by instantiateItem(ViewGroup, int) . | ||||||||||
void | notifyDataSetChanged() 调用该方法更新数据 | ||||||||||
void | registerDataSetObserver(DataSetObserverobserver) 注册观察者 | ||||||||||
void | restoreState(Parcelablestate,ClassLoaderloader) 恢复与adapter关联的所有页面的状态实例,并且该页面是通过saveState()方法保存的。 | ||||||||||
Parcelable | saveState() 保存于adapter关联的所有的页面,直到调用restoreState方法时被恢复 | ||||||||||
void | setPrimaryItem(Viewcontainer, int position,Objectobject) This method is deprecated. UsesetPrimaryItem(ViewGroup, int, Object) | ||||||||||
void | setPrimaryItem(ViewGroupcontainer, int position,Objectobject) Called to inform the adapter of which item is currently considered to be the "primary", that is the one show to the user as the current page. | ||||||||||
void | startUpdate(Viewcontainer) 该方法已废弃.使用startUpdate(ViewGroup)代替 | ||||||||||
void | startUpdate(ViewGroupcontainer) 开始调用显示页面 | ||||||||||
void | unregisterDataSetObserver(DataSetObserverobserver) 在回调函数中通过adapter的数据变化注销观察者对象 |
更多相关文章
- Android Studio学习:中级控件:使用Intent进行页面之间数据传输
- Android定位问题方法
- android获取设备屏幕分辨率的方法
- android页面切换动画
- Android 在Activity中获取控件尺寸的方法
- android中的ListView的使用方法
- 【android开发】之【android动态布局方法总结】
- Android 通过接口的方式去调用服务里面的方法
- android的ndk修改app_platform的方法,亲测绝对可行