实现ViewPager要适配器,一般的使用PagerAdapter,对于fragment,我们所使用的是FragmentPagerAdapter和FragmentPagerStateAdapter。

FragementPagerAdapter和FragmentPagerStateAdapter的区别

FragmentPagerAdapter和FragmentPagerStateAdapter都继承自PagerAdapter。

FragmentPagerAdapter中每生成一个Fragment都会保存在内存里,比较适合相对静态的,数量也比较少的页。

FragmentPagerStateAdapter适合处理有很多页,并且数据动态性较大、占用内存较多的情况。

与FragmentPagerAdapter一致,是继承自PagerAdapter,但是正如”State”所表明的含义一样,该PagerAdapter的实现将只保留当前页面,当页面离开时,就会被消除,释放其资源。在页面需要显示时,生成新的页面。这样实现的好处就是当拥有大量的页面时,不必在内存中占用大量的内存。

FragmentPagerAdapter的派生类,只需要重写getItem(int position)和getCount()就行了。使用Fragment的List对象来保存Fragment。

public class FragAdapter extends FragmentPagerAdapter {private List<Fragment> fragmentList;public FragAdapter(FragmentManager fm,List<Fragment> fragments) {super(fm);fragmentList=fragments;}@Overridepublic Fragment getItem(int position) {return fragmentList.get(position);}@Overridepublic int getCount() {return fragmentList.size();}
}

创建两个Fragement类

fragment1.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical" android:layout_width="match_parent"android:layout_height="match_parent"android:background="@color/colorAccent"><TextViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:text="fragment1"/>
</LinearLayout>

fragment2.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical" android:layout_width="match_parent"android:layout_height="match_parent"android:background="@color/colorPrimary"><TextViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:text="fragment2"/></LinearLayout>

Fragment1.class

public class Fragment1 extends Fragment{@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// TODO Auto-generated method stubView view= inflater.inflate(R.layout.fragment1, container, false);return view;}
}

Fragment2.class

public class Fragment1 extends Fragment{@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// TODO Auto-generated method stubView view= inflater.inflate(R.layout.fragment2, container, false);return view;}
}

MainActivity中

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="vpfd.com.viewpagerframent.MainActivity"><android.support.v4.view.ViewPagerandroid:layout_width="match_parent"android:layout_height="match_parent"android:id="@+id/vp"></android.support.v4.view.ViewPager></android.support.constraint.ConstraintLayout>

MainActivity.class

public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//构造适配器List<Fragment> fragments=new ArrayList<Fragment>();fragments.add(new Fragment1());fragments.add(new Fragment2());FragAdapter adapter = new FragAdapter(getSupportFragmentManager(), fragments);//设定适配器ViewPager vp = (ViewPager)findViewById(R.id.vp);vp.setAdapter(adapter);}
}

最后效果如图

ViewPager简单介绍(二)ViewPager+Fragment相关推荐

  1. ViewPager简单介绍(三) ViewPager+Fragment+TabLayout

    前两篇文章中介绍了TabLayout和ViewPgaer+Fragment的使用,这篇文章将三者结合起来,做成一个比较常见的布局,如图: 如果对着这两者有什么不清楚的,可以看看这两篇,都是一些简单的使 ...

  2. ViewPager简单介绍(一)

    一.ViewPager是什么 官方介绍是: Layout manager that allows the user to flip left and right through pages of da ...

  3. Linux 下UVCamp;V4L2技术简单介绍(二)

    通过前文Linux 下UVC&V4L2技术简单介绍(一)我们了解了UVC和V4L2的简单知识. 这里是USB设备的文档描写叙述:http://www.usb.org/developers/do ...

  4. 一、tars简单介绍 二、tars 安装部署资料准备

    1.github地址https://github.com/Tencent/Tars/ 2.tars是RPC开发框架,目前支持c++,java,nodejs,php 3.tars 在腾讯内部已经使用了快 ...

  5. xmpp学习使用简单介绍(二)

    三:朋友列表  XEP-0083 获得朋友列表,我们要使用花名册(roster)的方法 添加 在setupStream方法中添加 xmppRosterStorage = [[XMPPRosterCor ...

  6. ViewPager的介绍和使用

    ViewPager 一.ViewPager简介 二.ViewPager使用 三.翻页监听 四.ViewPager与Fragment的结合使用 四.案例 一.ViewPager简介 ViewPger就是 ...

  7. canvas1:简单介绍、开始使用、画直线+虚线

    目录 一.简单介绍 二.开始使用 三.画直线.虚线 3.1 画直线 1. 画直线的步骤: 2. 设置直线的样式 3. 绘制多条直线 3.2 画虚线 四.整理使用到的方法: 参考了廖雪峰老师的笔记. 一 ...

  8. C语言生成midi文件,介绍二个wave 转 midi的开源项目

    //lihaoyxj@gmail.com 在进行音频处理时,往往需要把wav数据转成其它格式,而作为音乐编辑类的软件,更多则是要以midi格式去处理. 在这里简单介绍二款开源的有关音频中和midi相关 ...

  9. C++ shared_ptrweak_ptr的简单介绍和仿写

    文章目录 shared_ptr 一.shared_ptr的简单介绍 二.shared_ptr的使用 1.函数介绍 2.使用 三.shared_ptr对象创建方法的讨论 1. 有两种常见的创建的方法: ...

最新文章

  1. FirstApp,iphone开发学习总结7,相机
  2. stm32_CAN总线知识
  3. 用命令行为MySQL设置/修改管理员密码
  4. 使用Letax引用文献一直报错: LaTeX Error: Something‘s wrong--perhaps a missing \item
  5. mysql 和区块链的差别_论区块链是什么数据库——正名篇
  6. Web 前端自学很苦?来,手把手教你,拿下前端!
  7. dhcp 授权的原理
  8. 我爱计算机视觉精华文章分类汇总(2018年12月13日)
  9. LeetCode——maximal-rectangle
  10. 简单演示matlab生成三维平面的命令mesh
  11. 应用层协议 ——— HTTP协议
  12. 工字型钢弹性截面模量计算公式_截面抗弯模量的公式
  13. php影院影城源码,99影院源码 影视网站程序源码/附教程
  14. 计算机专业面试银行的自我介绍,银行面试自我介绍1分钟
  15. 阿里天池比赛——地表建筑物识别
  16. 《天下无贼》经典台词与遗憾
  17. 已解决:树莓派外接硬盘 usb 或者sata 导致wifi无法链接 无线网卡无法使用问题
  18. (附源码)计算机毕业设计SSM基于框架的旅游订票系统
  19. xshell6个人版解除窗口限制(亲测可用,需卸载当前xshell6)
  20. 三人易行PLC编程培训怎么样?

热门文章

  1. 【原】Linux shell script 21是什么意思
  2. 计算机机房建设标准.doc,计算机机房建设标准.doc
  3. Python爬取动态网页实例讲解
  4. SAP-ABAP性能优化之构建嵌套结构的哈希表
  5. Failed to push the item(s)解决方法
  6. 忘记UCENTER创始人密码的解决办法
  7. YOLOv4---(详解各种trick)
  8. python args keargs_Python metrics.silhouette_score方法代码示例
  9. 运放放大倍数计算公式_运算放大器基础1——用作比较器
  10. VM8 asdebug.js:1 GET http://192.168.1.106:7101/GOODS/G-F-Kill net::ERR_CONNECTION_REFUSED