这一节介绍使用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));
}

三、ViewPager与适配器关联

只需要在Activity中,实例化适配器和ViewPager控件,并用setAdapter方法关联即可

pager= (ViewPager) findViewById(R.id.pager);
MyPageAdapter myadapter = new MyPageAdapter(viewList);
pager.setAdapter(myadapter);

Android学习——ViewPager的使用(一)的更多相关文章

  1. android学习ViewPager的简单使用

    使用ViewPager需要引入android.support.v4.View.ViewPager这样的jar包,谷歌公司为解决当前版本碎片化的问题,提供的兼容的包.主要目的就是解决向下兼容问题. 1, ...

  2. Android学习——ViewPager的使用(三)

    这一节来介绍一下在ViewPager中常用到的一个控件,标题栏. 标题栏分为PagerTabStrip和PagerTitleStrip两种,用法类似,这里介绍第一种. 具体做法 在layout文件中的 ...

  3. Android学习——ViewPager的使用(二)

    这一节介绍使用FragmentPagerAdapter适配器,来加载Fragment对象. 数据源 加载Fragment对象时,数据源自然来自Fragment,与View类似,依旧使用List来存放数 ...

  4. android之ViewPager

    在android中ViewPager是非常常用的控件.它在android.support.v4.view.ViewPager下.你们自己可以进http://developer.android.com/ ...

  5. android笔记:ViewPager实现界面的滑动

    最近在学习ViewPager实现界面的滑动,拜读了郭神的博客文章,并抽取归纳了自己对ViewPager的理解. ViewPager实现界面滑动的步骤如下: 1.在xml布局内加入控件android.s ...

  6. Android学习笔记之图片轮播...

    PS:一个bug又折腾了一个下午....哎... 学习内容: 1.Android利用ViewPager和PagerAdapter实现图片轮播... 2.使用反射机制获取Android的资源信息... ...

  7. 安卓开发_深入学习ViewPager控件

    一.概述 ViewPager是android扩展包v4包(android.support.v4.view.ViewPager)中的类,这个类可以让用户左右切换当前的view. ViewPager特点: ...

  8. 我的Android学习之旅(转)

    去年大概在七月份的时候误打误撞接触了一阵子Android,之后由于工作时间比较忙,无暇顾及,九月份的时候自己空闲的时间比较多,公司相对来说加班情况没以前严重.开启了个人的Android学习之旅,初衷是 ...

  9. 2015最新Android学习线路图

    Android是一个以Linux为基础的半开源操作系统,主要用于移动设备,由Google和开放手持设备联盟开发与领导.据2011年初数据显示仅正式上市两年的操作系统Android已经跃居全球最受欢迎的 ...

随机推荐

  1. requests库安装

    1.运行cmd输入pip install requests C:\Users\Administrator\AppData\Local\Programs\Python\Python37\Scripts ...

  2. bzoj 1189 二分+最大流

    题目传送门 思路: 先预处理出每个人到每扇门的时间,用门作为起点进行bfs处理. 然后二分时间,假设时间为x,将每扇门拆成1到x,x个时间点,表示这扇门有几个时间点是可以出去的.对于一扇门,每个时间点 ...

  3. 江西理工大学南昌校区排名赛 F: 单身狗的骑马游戏

    题目描述 萌樱花是一只单身狗. 萌樱花今天在学姐那里做了一道题: 假设赛马场上有n只马儿,第i只马儿的起点在第i米的位置,这些马儿都会朝着同一个方向奔跑. 每只马儿的速度都不一样,而且大家都不知道这些 ...

  4. 前端页面 script 事件总结

    1. input  失去焦点是触发事件 $("#sn").blur(function(){ alert("sdfasdf"); }); 2.  获取文本框中的 ...

  5. centos7升级firefox的flash插件

    1. 在https://get.adobe.com/flashplayer/下载文件.选择.tar.gz. 2. 下载的文件名为flash_player_npapi_linux.x86_64.tar. ...

  6. 在ASP.NET Core Web API 项目里无法访问(wwwroot)下的文件

    解决办法:在“ Startup.cs ” 文件里的 Configur方法里添加一句代码“ app.UseStaticFiles() ”,这样就可以访问wwwroot下的文件了. - 方法代码是: - ...

  7. PHP CURL_ERRNO 77

    项目中碰到curl https偶尔出现false,错误码77,可以尝试下面两种解决方法: 1.确认安装机器ca-certificates,重启PHP.设置curl_setopt($ch, CURLOP ...

  8. Knime 连接 MYSQL 8

    mysql8 腾空出世,话说mysql 跨过 6 7 版本直迈8,对这个数据库有跨时代的意思,引擎机制有个革命性的变革.决定尝试一把. 用大数据ETL工具Knime抽取数据.结果尴尬了: ERROR ...

  9. fixed

    之前我们见的fixed就是固定在低端.后来我遇到一个问题 如果  这样写: div{ position: fixed; left: 0; bottom: 0; } 内容吧div撑开,有多少算多少 di ...

  10. mysql 语句执行的过程

    客户端发送一条查询给服务器: 服务器先检查查询缓存,如果命中了缓存,则立刻返回存储在缓存中的结果.否则进入下一阶段. 服务器段进行SQL解析.预处理,在优化器生成对应的执行计划: mysql根据优化器 ...