Android - V之ViewPager的使用

敢说敢作敢为, 无怨无恨无悔。这篇文章主要讲述Android - V之ViewPager的使用相关的知识,希望能为你提供帮助。
ViewPager是android V4包中的一个控件,常常用来作为首页的滚动广告,也常常结合Fragment来实现页面的切换效果。
【Android - V之ViewPager的使用】ViewPager和ListView有很多相似的地方,都是适配器控件,要在其中展示数据,都需要设置适配器。ViewPager的常用的适配器类有两个:PagerAdapter和FragmentPagerAdapter,分别用来展示普通的布局页面和Fragment页面。下面我们来一一介绍。
 
1、ViewPager加载普通页面:
当我们需要使用ViewPager加载普通页面的时候,我们需要为ViewPager设置一个适配器,这个适配器必须是PagerAdapter的子类,因此,我们需要创建一个继承自PagerAdapter的子类,在这个类中实现或重写getCount()、isViewFromObject()、destroyItem()、instantiateItem()方法。

  • getCount()方法:获取ViewPager中的页数;
  • isViewFromObject()方法:ViewPager中的数据是否是直接从提供的数据源中加载的,一般返回view == object就可以了;
  • destroyItem()方法:从ViewPager中删除这一页,这个方法通常是删除三张以前的页面,其目的是资源回收。我们需要做的是从数据源中取出当前需要销毁的页面,调用removeView()方法删除即可。
  • instantiateItem()方法:加载页面方法。在这个方法中创建页面,适配数据,然后return。
具体的代码如下:
public class MyPageAdapter extends PagerAdapter { private int[] resources; private List< View> views; private LayoutInflater inflater; public MyPageAdapter(Context context, int[] resources) { this.resources = resources; this.views = new ArrayList< > (); this.inflater = LayoutInflater.from(context); }@Override public int getCount() { return resources.length; }@Override public boolean isViewFromObject(View view, Object object) { return view == object; }@Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView(views.get(position)); }@Override public Object instantiateItem(ViewGroup container, int position) { View view = inflater.inflate(R.layout.pageritem_page, container, false); ImageView iv = (ImageView) view.findViewById(R.id.image); iv.setImageResource(resources[position]); container.addView(view); views.add(view); return view; } }

 
2、ViewPager加载Fragment:
当我们需要使用ViewPager加载Fragment的时候,我们需要为ViewPager设置的适配器类必须是FragmentPagerAdapter类的子类,并且实现其中的getCount()方法和getItem()方法。
  • getCount()方法:获取设置ViewPager中Fragment的数量
  • getItem()方法:根据position参数获取到当前加载的Fragment对象
具体的代码如下:
public class MyPagerAdapter extends FragmentPagerAdapter { private List< Fragment> fragments; public MyPagerAdapter(FragmentManager fm) { super(fm); }public void setFragments(List< Fragment> fragments) { this.fragments = fragments; }@Override public Fragment getItem(int position) { return fragments.get(position); }@Override public int getCount() { return fragments.size(); } }

 
以上就是对ViewPager的简单使用的介绍,下面贴出码云上的源码,供大家参考。
DEMO地址

    推荐阅读