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(); } }
相关文章推荐
- Android初级知识--ViewPager适配器:PagerAdapter和FragmentPagerAdapter的最基本使用
- Android适配器之FragmentPagerAdapter
- 55 Android Fragment_ViewPager 适配器 FragmentStatePagerAdapter
- Android FragmentPagerAdapter数据刷新notifyDataSetChanged没效果研究
- Android FragmentPagerAdapter翻译
- Android修炼之道—FragmentStatePagerAdapter和FragmentPagerAdapter
- Android中ViewPager使用FragmentPagerAdapter(底部圆点)
- Android FragmentStatePagerAdapter Example
- Android FragmentPagerAdapter数据刷新notifyDataSetChanged没效果研究
- Android中FragmentStatePagerAdapter ,FragmentPagerAdapter
- 【Android界面实现】FragmentPagerAdapter与FragmentStatePagerAdapter使用详解与区别
- android ViewPager学习(四)FragmentStatePagerAdapter viewpager内fragment的替换
- Android FragmentStatePagerAdapter
- Android-- FragmentStatePagerAdapter(分页)
- 【Android】FragmentPagerAdapter与FragmentStatePagerAdapter使用详解与区别
- Android中ViewPager使用FragmentPagerAdapter(底部圆点)
- android fragmentStateViewPagerAdapter 介绍
- Android适配器之PagerAdapter
- Android FragmentPagerAdapter vs FragmentStatePagerAdapter
- Android FragmentPagerAdapter Example