zoukankan      html  css  js  c++  java
  • 【Android

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

  • 相关阅读:
    java基本类型和包装类型的区别以及object的公共方法
    Scrapy学习
    centos系统python2.7更新到3.5
    requests和BeautifulSoup模块的使用
    基于角色的权限控制系统(role-based access control)
    Git的使用
    可插拔式后台管理系统(Django)
    Django admin site应用
    【算法】RMQ LCA 讲课杂记
    oh-my-zsh 安装和使用
  • 原文地址:https://www.cnblogs.com/itgungnir/p/6210819.html
Copyright © 2011-2022 走看看