码迷,mamicode.com
首页 > 移动开发 > 详细

【Android - V】之ViewPager的使用

时间:2016-12-22 14:29:30      阅读:249      评论:0      收藏:0      [点我收藏+]

标签:oschina   getc   arraylist   blog   over   str   err   roi   tar   

ViewPager是Android V4包中的一个控件,常常用来作为首页的滚动广告,也常常结合Fragment来实现页面的切换效果。

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地址

【Android - V】之ViewPager的使用

标签:oschina   getc   arraylist   blog   over   str   err   roi   tar   

原文地址:http://www.cnblogs.com/itgungnir/p/6210819.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!