当前位置: 首页 > news >正文

『Android基础入门』ViewPager与Fragment结合实现多页面滑动

👨‍🎓作者简介:一位喜欢写作,计科专业大三菜鸟

🏡个人主页:starry陆离

如果文章有帮到你的话记得点赞👍+收藏💗支持一下哦

ViewPager与Fragment结合实现多页面滑动

  • 1.设置布局
  • 2.获取到viewPager实例
  • 3.创建Fragment页面
  • 4.创建适配器myFragmentVPAdapter
  • 5.初始化数据并绑定适配器
  • 6.实现事件监听
  • 7.效果展示
  • 8.Gitee源码

上次记录了ViewPager实现引导动画的效果,这次来实现一个类似的效果ViewPager与Fragment结合实现多页面滑动

主要使用到了FragmentPagerAdapter :用于连接ViewPager与Fragment的桥梁

复习ViewPager实现引导页:

  • 数据List+适配器Adapter+ViewPager

FragmentPagerAdapter的用法

  • 1.重写getItem() 获取fragment
  • 2.重写getCount() 返回fragment的实例个数

具体实现:

  • 1.设置布局,并给viewPager控件设置id
  • 2.获取到viewPager实例
  • 3.创建fragment页面(初始化数据)
  • 4.创建一个自定义的适配器myFragmentVPAdapter
  • 5.初始化数据
  • 6.获取MyFragmentVPAdapter实例,需要传入两个参数
  • 7.将ViewPager和myFragmentVPAdapter适配器绑定
  • 8.实现事件监听,和上一个demo一样

1.设置布局

布局还是很简单就是一个ViewPager

image-20220928173923901

2.获取到viewPager实例

同样的在MainActivity中获取到viewPager控件

image-20220928174005837

3.创建Fragment页面

可以看到我创建了一个名为MyFragment的碎片,因为我们等会要创建多个MyFragment对象,填充到ViewPager中,因此通过一个文本控件来区别不同的fragment页面

  • 1.声明文本控件变量
  • 2.外部通过newInstance实例化fragment,并带入外界传入的参数。参数存在Bundle对象中
  • 3.onCreate取出存在Bundle中的数据
  • 4.onViewCreated通过view找到布局中的文本控件并设置为外界传入的参数

image-20220928174120633

image-20221003233134055

4.创建适配器myFragmentVPAdapter

  • 1.自定义一个适配器类MyFragmentVPAdapter继承自FragmentPagerAdapter
  • 2.重写getItem()和getCount()方法
  • 3.在构造方法中初始化数据
  • 4.getItem返回当前的fragment
  • 5.getCount返回fragment的数量

这里getItem和getCount方法中我都采用的三元表达式,对fragment数据为空进行了处理。

image-20220928174519113

5.初始化数据并绑定适配器

回到MainActivity中初始化数据并将ViewPager和myFragmentVPAdapter适配器绑定

image-20220928174616409

6.实现事件监听

实现事件监听,和上一个demo一样

image-20220928174630935

7.效果展示

ad002

8.Gitee源码

Android_Java_Review: 学习–代码即笔记 (gitee.com)

相关文章:

  • 【电子技术基础(精华版)】二极管的基础知识
  • 行为识别系统 (一) --- Yolov7行人检测实例化
  • 前端:收集15个非常实用的JS代码,值得收藏
  • Swin Transformer v2实战:使用Swin Transformer v2实现图像分类(一)
  • Mysql权限
  • 微信小程序开发实战(SM周期及WXS脚本)
  • 实训任务1:Linux基本操作
  • C++11新特性精讲(多线程除外)
  • SpringCloud——Ribbon
  • 2022 华为杯数学建模研赛思路分享
  • MySql经典50道SQL练习题
  • 基于紧凑度和调度处理的粒子群优化算法-附代码
  • Keras深度学习实战——使用循环神经网络构建情感分析模型
  • 【中国大学生计算机大赛二等奖】智能中医-中e诊简介(一)
  • 【Linux】挂载硬盘、镜像文件、rpm软件包管理器、yum软件包管理器、软件安装jdk、tomcat、mysql
  • Python_OOP
  • sublime配置文件
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 硬币翻转问题,区间操作
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • RDS-Mysql 物理备份恢复到本地数据库上
  • 阿里云ACE认证之理解CDN技术
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • #HarmonyOS:基础语法
  • #每天一道面试题# 什么是MySQL的回表查询
  • #微信小程序(布局、渲染层基础知识)
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • %@ page import=%的用法
  • (10)ATF MMU转换表
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (强烈推荐)移动端音视频从零到上手(下)
  • (四)c52学习之旅-流水LED灯
  • (原創) 物件導向與老子思想 (OO)
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (转)菜鸟学数据库(三)——存储过程
  • .net 7 上传文件踩坑
  • .Net MVC4 上传大文件,并保存表单
  • .Net Web窗口页属性
  • .NET 的静态构造函数是否线程安全?答案是肯定的!
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)
  • .NET 中的轻量级线程安全
  • .net6使用Sejil可视化日志
  • .NET的数据绑定
  • .net下简单快捷的数值高低位切换
  • .net用HTML开发怎么调试,如何使用ASP.NET MVC在调试中查看控制器生成的html?
  • .net之微信企业号开发(一) 所使用的环境与工具以及准备工作
  • /dev下添加设备节点的方法步骤(通过device_create)