这一节介绍使用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. 【转】IntelliJ Idea取消Could not autowire. No beans of 'xxxx' type found的错误提示

    1.问题描述 在Idea的spring工程里,经常会遇到Could not autowire. No beans of 'xxxx' type found的错误提示.但程序的编译和运行都是没有问题的, ...

  2. rest-assured的日志使用介绍

    在许多测试用例当中,为了帮助我们创建正确的断言和发送正确的请求,打印出详细的响应和请求数据是非常有用的.为此我们可以使用rest-assured提供的预定义过滤器或者使用其中的一些快捷方法. 一.请求 ...

  3. 分享一个大型进销存供应链项目(多层架构、分布式WCF多服务器部署、微软企业库架构)

    项目源码下载:  WWW.DI81.COM 分享一个大型进销存供应链项目(多层架构.分布式WCF多服务器部署.微软企业库架构) 这是一个比较大型的项目,准备开源了.支持N家门店同时操作.远程WCF+企 ...

  4. D3.js v4版本 按住shift键框选节点demo

    http://download.csdn.net/download/qq_25042329/10139649

  5. PHPExcel 读取的几个例子

    1.使用 PHPExcel_IOFactory 读取文件 $objPHPExcel = PHPExcel_IOFactory::load($inputFileName); 2.使用一个特定的读取类,读 ...

  6. Scala 中 for 循环 和 generator 的使用例子

    这个例子是,从每个list中,找到age最大的那个node. class Node(vName: String, vAge: Int) { // Entity class var name: Stri ...

  7. Python入门书的读书笔记

    入门书地址 三引号 (""" 或 ''') 来指定多行字符串字符串是不可变的输出小数点后三位 print('{0:.3f}'.format(1 / 3))输出字符串长度为 ...

  8. 6.centos7 gitblit

    1,安装注意事项 1)必须将gitblit安装在/opt/gitblit这个目录下,因为 服务启动的脚本里面默认就是这个路径 如果不按照这个路径安装需要修改脚本 mkdir -p /opt/gitbl ...

  9. Kafka消费不到数据的特殊情况

    我大约是把kafka消费不到数据的特殊情况都经历了一遍了吧= =. kafka消费不到数据的原因,首先检查配置之类的,如是否设置了group.id,对应的topic是否正确等等,这些不多说. 下面是我 ...

  10. oracle 操作实例(一)----rman 全备恢复

    一,环境背景 拥有全备数据库 全备脚本: export TMP=/tmp export TMPDIR=$TMP export ORACLE_BASE=/u01 export ORACLE_SID=pr ...