• Android中最常用的适配器:PagerAdapter与FragmentPagerAdapter


    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();
        }
    }
    
  • 相关阅读:
    js中的setTimeout和setinterval 用法说明
    Springmvc对就jdbc封装的操作
    mybatis源码数据库链接配置
    hibernate操作mysql插入修改中文出现乱码
    jdk安装环境变量配置
    数据库理论知识
    异步提交form表单数据
    选项卡
    css3 二级菜单
    简单弹窗拖拽
  • 原文地址:https://www.cnblogs.com/cxyquan/p/9746604.html
Copyright © 2020-2023  润新知