文章目录
  1. 1. PagerAdapter
  2. 2. FragmentPagerAdapter
  3. 3. FragmentStatePagerAdapter

PagerAdapter

PagerAdapter是android.support.v4包中的类,它的子类有FragmentPagerAdapterFragmentStatePagerAdapter,这两个Adapter都是Fragment的适配器,用于实现Fragment的滑动效果。

PagerAdapter主要是ViewPager的适配器,ViewPager也是android.support.v4扩展包中添加的控件,可以实现控件的活动效果。

  1. instantiateItem(ViewGroup,int) // 将显示的控件进行初始化,并加入到ViewGroup中去
  2. destroyItem(ViewGroup,int,Object) // 销毁控件
  3. getCount() // 控件的数量
  4. isViewFromObject(View,Object) // 判断是否是同一对象

FragmentPagerAdapter

FragemntPagerAdapter用于处理Fragment页面的横向滑动,每一个页面都是一个Fragment,并且每一个Fragment都将会保存到Fragment Manager当中,当用户没有可能再次回到页面时,Fragment Manager才会将其销毁
适用于静态Fragment,每个页面对应的Fragment用户可以访问时会一直在内存中,当页面数量比较大时,建议使用FragmentStatePagerAdapter
FragmentPagerAdapter需要实现getItem(int)getCount()方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class MyAdapter extends FragmentActivity {
static final int NUM_ITEMS = 10;

public MyAdapter(FragmentManager fm) {
super(fm);
}

@Override
public getCount(){
return NUM_ITEMS;
}

@Override
public Fragment getItem(int position){
return fragments.get(position); // 返回Fragment
}
}

FragmentStatePagerAdapter

FragmentStatePagerAdapter只保留当前页面,当页面离开实现后,就会被消除,释放其资源。

  • getItem() 返回Fragment,生成新的Fragment对象,可以使用setArguments()传递初始化参数
  • instantiateItem() 除非FragmentManager可以从SavedState中恢复对应的Fragment的情况外,该函数会调用getItem()函数,生成新的Fragment对象,新的对象将被FragmentTransaction.add()
  • destroyItem() 将Fragment移除,即调用FragmentTransaction.remove()
文章目录
  1. 1. PagerAdapter
  2. 2. FragmentPagerAdapter
  3. 3. FragmentStatePagerAdapter