这一节介绍使用ViewPager,加载ViewPager主要有三部分,数据源、适配器和ViewPager与适配器关联。其中数据源分为View对象和Fragment对象,这一节先来介绍View对象。
加载View对象,数据源自然是View的集合,这里通过View的inflate方法来加载布局文件所对应的view对象,并添加到List集合中作为数据源。
fragmentList=new ArrayList<>();
fragmentList.add(new Fragment1());
fragmentList.add(new Fragment2());
fragmentList.add(new Fragment3());
fragmentList.add(new Fragment4());
viewList=new ArrayList<View>(); View view1 = View.inflate(this, R.layout.view_1, null); View view2 = View.inflate(this, R.layout.view_2, null); View view3 = View.inflate(this, R.layout.view_3, null); View view4 = View.inflate(this, R.layout.view_4, null); View view5 = View.inflate(this, R.layout.view_5, null); View view6 = View.inflate(this, R.layout.view_6, null); viewList.add(view1); viewList.add(view2); viewList.add(view3); viewList.add(view4); viewList.add(view5); viewList.add(view6);
适配器,简单来说就是声明对数据源的一系列操作,在页面滑动到不同位置时,加载出对应的界面。利用View对象加载适配器时,需要新建一个类,并继承PagerAdapter父类。
public class MyFragmentAdapter extends FragmentPagerAdapter { private List<Fragment> fragmentList; public MyFragmentAdapter(FragmentManager fm,List<Fragment> fragmentList) { super(fm); this.fragmentList=fragmentList; } @Override public Fragment getItem(int position) { return fragmentList.get(position); } @Override public int getCount() { return fragmentList.size(); } }
public class MyPageAdapter extends PagerAdapter
初始化其构造方法,由于我们需要获取数据源,故构造方法中需要得到对应的数据源。
public MyPageAdapter(List<View> viewList){ this.viewList=viewList; }
重写下面四个方法:
getCount方法,返回获取到的数据源的个数:
@Override public int getCount() { return viewList.size(); }
isViewFromObject,按如下写好即可
@Override public boolean isViewFromObject(View view, Object object) { return view==object; }
instantiateItem,在加载页面布局的时候调用的方法
@Override public Object instantiateItem(ViewGroup container, int position) { container.addView(viewList.get(position)); return viewList.get(position); }
destoryItem,在销毁页面布局时调用的方法
@Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView(viewList.get(position)); }
只需要在Activity中,实例化适配器和ViewPager控件,并用setAdapter方法关联即可
pager= (ViewPager) findViewById(R.id.pager); MyPageAdapter myadapter = new MyPageAdapter(viewList); pager.setAdapter(myadapter);
原文:http://www.cnblogs.com/J-inx/p/6309022.html