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 {
@Override
public int getCount() {
return views.length;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(views[position]);
return views[position];
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view==object;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
}
FragmentPagerAdapter
FragmentPagerAdapter一般用来处理多 Fragment 页面的横向滑动。
代码如下
public class MyFragmentPageAdapter extends FragmentPagerAdapter {
List<Fragment> data;
public MyFragmentPageAdapter(FragmentManager fm, List<Fragment> list) {
super(fm);
this.data = list;
}
@Override
public Fragment getItem(int position) {
return data.get(position);
}
@Override
public int getCount() {
return data.size();
}
}