美文网首页爱天气App实战开发
模块4:主视图UI布局 - 使用ViewPager(4)

模块4:主视图UI布局 - 使用ViewPager(4)

作者: jingz课程 | 来源:发表于2019-03-20 10:46 被阅读0次

    Fragment列表和ViewPager适配器

    回到ViewPager所在的主视图源代码文件MainActivity.java。需要增加两个东西:

    • WeatherFragment对象列表:这个代表ViewPager所管理和展示的页面集合。未来会按照用户具体添加的位置来产生。而目前,我们直接生成5个实例来验证ViewPager
    • ViewPager适配器:将WeatherFragment对象列表关联到 ViewPager
      先定义Fragment列表。

    Fragment列表

    增加列表类型的成员mFragments并初始化为空列表:

    Fragment列表

    紧接着我们为它填充测试数据。编写一个内部的私有函数fillTestInstances()来完成,并在onCreate()方法里面调用:

    装填测试对象

    fillTestInstances()内部较为简单,一个次数为5次的循环,每次循环都通过工厂方法建立一个实例装入Fragment列表,并将循环次数作为序号。


    ViewPager适配器

    适配器(Adapter)这种设计使得UI视图的控制逻辑和数据本身得以分离。至于视图中的元素如何与数据项对应,则只需要在适配器中指定即可。因此,无论是ViewPager还是ListView以及更高级的RecyclerView这类重复性的视图组件通常都按照这种“视图(View)——适配器(Adapter)——数据集(Data Set)”的形式来进行组织。

    Android SDK针对ViewPager提供了几种适配器基类,例如:

    • PagerAdapter
    • FragmentPagerAdapter
    • FragmentStatePagerAdapter

    其中PagerAdapter是适配器基类,FragmentPagerAdapterFragmentStatePagerAdapter是针对以Fragment来表示页面时可选择的实现类。在我们的项目中选择在FragmentStatePagerAdapter的基础上定义自己的适配器类。

    在类MainActivity内部定义适配器类WeatherPagerAdapter,并使其扩展自FragmentStatePagerAdapter

    红线意味着语法报错。还是老办法——光标定位,按Alt+Enter查看修正菜单:

    选择第一项“Implement methods”,Android Studio自动向类中增加了需要我们自己实现的方法。修正后仍然报错,继续Alt+Enter可知需要添加一个构造方法,还是自动完成。结束后代码如下:

    接下来分别实现两个方法:

    getItem()

    这个方法意思是指出参数position对应位置的Fragment对象,编写代码如下:

    获取当前页的Fragment对象

    getCount()

    这个方法意思是获取全部页面的数量,返回列表mFragments的长度即可:

    获取页面数量

    下面我们来将适配器WeatherAdapter与ViewPager绑定。先分别为ViewPager和适配器各定义一个成员变量:

    再转到onCreate()方法中,分别初始化这两个成员变量,并将适配器设置给ViewPager:

    到这里,整个ViewPager的运作机制搭建完成。运行程序查看效果:

    接下来我们转向WeatherFragment内部,搭建天气信息视图。


    本小节修改的文件包括:

    modified:   app/src/main/java/com/dmtech/iw/MainActivity.java
    modified:   app/src/main/java/com/dmtech/iw/WeatherFragment.java
    

    相关文章

      网友评论

        本文标题:模块4:主视图UI布局 - 使用ViewPager(4)

        本文链接:https://www.haomeiwen.com/subject/bievmqtx.html