您的位置:首页 > 移动开发 > Android开发

Android中最常用的适配器:PagerAdapter与FragmentPagerAdapter

2016-10-06 12:02 447 查看

PagerAdapter与FragmentPagerAdapter

PagerAdapter

官方对于PageAapter的描述:Base class providing the adapter to populate pages inside of a ViewPager. You will most likely want to use a more specific implementation of this, such as FragmentPagerAdapter or FragmentStatePagerAdapter。

而ViewPager。它是google SDk中自带的一个附加包(v4)的一个类,可以用来实现屏幕间的切换。

注意:ViewPager是 v4包中的,所以在布局中使用时,需要写全

android.support.v4.view.ViewPager

PagerAdapter就是ViewPager提供的一个适配器。

使用步骤

1.创建一个class,继承自PagerAdapter

2.该Adapter用来适配Viewpage

3.需要重写4个方法

a.getCount(),告诉ViewPager,有多少个View要显示

b.instantiateItem(),该方法两个作用:一、把要被显示的视图加载ViewGroup,二、返回要加载的View

c.isViewFromObject(),用来判断instantiateItem返回的Object与当前的View是否是同一对象

d.destroyItem(),该方法在View被移除时调用

代码如下

class MyPageAdapter extends PagerAdapter {
/*
* 告诉ViewPager,有多少个View要显示
*/
@Override
public int getCount() {
return views.length;
}
/*
* 该方法两个作用:一、把要被显示的视图加载到ViewGroup,二、返回要加载的View
*
* 两个参数:
*
* 参数一:ViewGroup:被加载的View的父布局
*
* 参数二:position:要加载的View在数组或集合中的位置
*/
@Override
public Object instantiateItem(ViewGroup container, int position) {
// 1.加载View到container
container.addView(views[position]);
// 2.返回被加载的视图
return views[position];
}
/*
* 用来判断instantiateItem返回的Object与当前的View是否是同一对象
*/

@Override
public boolean isViewFromObject(View view, Object object) {
// TODO Auto-generated method stub
return view==object;
}

/*
* 该方法在View被移除时调用
*
* 移除对应的View
*
* 三个参数:
*
* 参数一:container:要被移除的View的父布局
*
* 参数二:position:表示要被移除的View在数组或集合中的位置
*
* 参数三:Object:代表的就是要被移除的对象
*/
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
// 不要保留super语句,否则报错:没重写desoryItem
// super.destroyItem(container, position, object);
// 移除指定的View
// container.removeView(views[position]);
container.removeView((View) object);
}
}


FragmentPagerAdapter

FragmentPagerAdapter一般用来处理多 Fragment 页面的横向滑动。

使用步骤

1.创建一个class,继承自FragmentPagerAdapter

2.该Adapter用来适配Fragment与Viewpage

3.重写3个函数,重写构造方法,getItem,getCount

代码如下

public class MyFragmentPageAdapter extends FragmentPagerAdapter {
//需要的数据
List<Fragment> data;

public MyFragmentPageAdapter(FragmentManager fm, List<Fragment> list) {
super(fm);
this.data = list;
}
//返回要加载的Fragemnt
@Override
public Fragment getItem(int position) {
return data.get(position);
}

@Override
public int getCount() {
return data.size();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息