ViewPager基本用法

简介: 用法:数据ImageView+自定义适配器+ViewPager控件

用法:数据ImageView+自定义适配器+ViewPager控件


1 添加ViewPager


在Activity的XML布局文件中添加一个控件——ViewPager。


在Java代码中找控件ViewPager。


2 创建Adapter类


继承PagerAdapter类,重写必须重写的两个方法getCount和isViewFromObject。


并ctrl+o,重写两个生成控件和销毁控件的两个方法。


instantiateItem和destroyItem。


3 在Adapter类中准备数据


此处我们只展示一个图片ImageView


即List<ImageView>。


4 重写适配器中的方法


4.1 重写getCount


获取列表中元素的个数。


public int getCount(){
    return mImageViewList==null?0:mImageViewList.size();
}


4.2 重写isViewFromObject


判断这个View和Object是不是同一个东西。而这个Object是什么,就是下一个要重写的instantiateItem方法的返回值View就是这一页


public boolean isViewFromObject(View view,Object object){
    return view==object;
}


4.3 重写instantiateItem


生成一页,也就是ImageView,也就是List列表中的一项。


而整个List就相当于一个ViewPager。


public Object instantiateItem(ViewGroup container,int position){
    //从列表中获取元素
    ImageView imageView=mImageViewList.get(position);
    //把此元素放入ViewGroup中
    container.addView(imageView);
    //返回此元素
    return imageView;
}


4.4 重写destroyItem


当从这一页划到另外一页时,前面那一页应该被销毁。


public void destroyItem(ViewGroup container,int position,Object object){
    super.destroyItem(container,position,object);
    //从ViewGroup中移除
    container.removeView((View)object);
}


4.5 实例化

public Adapter(List<ImageView> imageViewList){
    mImageViewList=imageViewList;
}


5 回到Avtivity,实例化适配器对象


准备数据并传入。


private void intiData(){
    ImageView imageView1=new ImageView(this);
    imageView1.setImageResource(R.id.xxx);
    ImageView imageView2=new ImageView(this);
    imageView2.setImageResource(R.id.xxx);
    ImageView imageView3=new ImageView(this);
    imageView3.setImageResource(R.id.xxx);
    mImageViews=new ArrayList<>();
    mImageViews.add(imageView1);
    mImageViews.add(imageView2);
    mImageViews.add(imageView3);
}


6 主运行代码


先进行第五步的数据初始化。先进行第五步的数据初始化。


然后创建适配器对象。


然后给ViewPager设置适配器。


然后有必要的时候给ViewPager添加监听addOnPageChangeListener(new ViewPager.OnpageChangeLisgener()),有三个回调方法,最常用的是第二个onPageSelected(),


就是划定到某一页就会触发。

目录
相关文章
|
数据采集 机器学习/深度学习 算法
ModelScope问题之恢复模型训练如何解决
ModelScope训练是指在ModelScope平台上对机器学习模型进行训练的活动;本合集将介绍ModelScope训练流程、模型优化技巧和训练过程中的常见问题解决方法。
259 0
默认网关填了不能保存问题秒解
周末的休息,电脑也跟着一起休息了起来,晕晕乎乎了两天,没想到电脑也受到了感染,变成了中毒的状态,具体特征表现为:默认网关填写之后确定不能保存;当然电脑也就不能够通过网络与外网或者局域网通信了~
|
分布式计算 Java Hadoop
三台阿里云服务器搭建完全分布式Hadoop集群
三台阿里云服务器搭建完全分布式Hadoop集群
1962 1
三台阿里云服务器搭建完全分布式Hadoop集群
|
11月前
|
机器学习/深度学习 前端开发 算法
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
811 4
php常见问题,php.ini文件不存在或者找不到,mb_strlen()函数未定义系列问题,dll模块找不到的解决
本文介绍了解决PHP常见问题的步骤,包括定位和创建`php.ini`文件,以及解决`mb_strlen()`函数未定义和DLL模块加载错误的具体方法。
php常见问题,php.ini文件不存在或者找不到,mb_strlen()函数未定义系列问题,dll模块找不到的解决
|
移动开发 前端开发 JavaScript
JS配合canvas实现贪吃蛇小游戏_升级_丝滑版本_支持PC端和移动端
本文介绍了一个使用JavaScript和HTML5 Canvas API实现的贪吃蛇游戏的升级版本,该版本支持PC端和移动端,提供了丝滑的转向效果,并允许玩家通过键盘或触摸屏控制蛇的移动。代码中包含了详细的注释,解释了游戏逻辑、食物生成、得分机制以及如何响应不同的输入设备。
456 1
JS配合canvas实现贪吃蛇小游戏_升级_丝滑版本_支持PC端和移动端
|
机器学习/深度学习 人工智能 数据可视化
Jupyter Notebook的10个常用扩展介绍
Jupyter Notebook(前身为IPython Notebook)是一种开源的交互式计算和数据可视化的工具,广泛用于数据科学、机器学习、科学研究和教育等领域。它提供了一个基于Web的界面,允许用户创建和共享文档,这些文档包含实时代码、方程、可视化和文本。
427 6
|
机器学习/深度学习 人工智能 算法
|
SQL 关系型数据库 MySQL
SQLAlchemy使用指南
**SQLAlchemy 指南**:Python SQL 工具包,提供数据库高级抽象。安装:`pip install sqlalchemy`,加上数据库驱动(如 MySQL: `pip install mysql-connector-python`)。基础使用包括:创建数据库连接、定义模型、创建表、添加/查询/更新/删除数据。高级功能涉及关系映射、原生 SQL 语句及 SQLAlchemy Core。推荐阅读官方文档以深入了解。
982 1
|
分布式计算 DataWorks NoSQL
MaxCompute产品使用合集之如何操作和管理节点
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
302 0