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

ViewPager结合Fragment进行无限滑动

 

实现ViewPager结合Fragment实现无限循环切换,这里也是在适配器里面进行的,当然使用滑动监听也能够实现


import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.view.ViewGroup;

import java.util.ArrayList;

public class adapter extends FragmentPagerAdapter
{
private ArrayList<Fragment> fragmentList; public adapter(FragmentManager fm) { super(fm); } public adapter(FragmentManager fm, ArrayList<Fragment> fragmentList) { super(fm); this.fragmentList=fragmentList; } @Override public Fragment getItem(int position) { //在这里不处理position的原因是因为getItem方法在 //instantiateItem方法中调用。只要在调用前处理 //position即可,以免重复处理 return fragmentList.get(position); } @Override public int getCount()
{
return Integer.MAX_VALUE; } @Override public int getItemPosition(Object object)
{
return super.getItemPosition(object); } @Override public Object instantiateItem(ViewGroup container, int position)
{
//处理position。让数组下标落在[0,fragmentList.size)中,防止越界 position = position % fragmentList.size(); return super.instantiateItem(container, position); } }

以上参考:博客http://www.ilrose.com/blog/2015/12/09/android-viewpager%E5%AE%9E%E7%8E%B0%E6%97%A0%E9%99%90%E5%BE%AA%E7%8E%AF%E6%BB%91%E5%8A%A8/ 

经过实际检验,要传进4个fragment,否则往右边滑动会出现问题,原因不知......

想要实现答题界面的翻页效果便可以采用这种方法,可以建立一个ReadFragment,然后new 出4个这个Fragment的对象。不同页面的共同的处理可以直接在ReadFragment里头实现,翻页的时候每一页需要改变的参数可以在滑动监听器里获取这4个对象来实现。

        Fragment a=new ReadFragment();
        Fragment b=new ReadFragment();
        Fragment c=new ReadFragment();
        Fragment d=new ReadFragment();

        list=new ArrayList<Fragment>();
        list.add(a);
        list.add(b);
        list.add(c);
        list.add(d);
readViewPager.setAdapter(new adapter(getSupportFragmentManager(),list));

 

 

readViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener()
        {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels)
            {}

            @Override
            public void onPageSelected(int position)
            {
//处理position。让position落在[0,fragmentList.size)中,防止数组越界 position
= position % list.size(); ReadFragment fragment= (ReadFragment) list.get(position); //获得此时选中的fragment fragment.refreshState(); //翻页的时候每个页面需要改变的参数使用这个方法来实现,这个方法在ReadFragment里面,修饰器得使用public
  ... } @Override
public void onPageScrollStateChanged(int state) {} });

后来我发现以上这种刷新fragment的方法有个弊端,就是展示出来的第一页无法得到刷新,因为第一页显示的时候不会去调用onPageSelected,得单独处理

以上便可以实现答题翻页。当然少不了翻页动画的实现,这个下一篇博客单独讲

 

转载于:https://www.cnblogs.com/tangZH/p/6516566.html

相关文章:

  • 原生Ajax
  • 过中等难度题目.0310
  • QTcpSocket的连续发送数据和连续接收数据
  • HTM5新手学习的一些日常总结,相互交流和相互学习。
  • 客服系统微服务架构的演化
  • Atitit 提升效率 界面gui方面的前后端分离与cbb体系建设 规范推荐标准
  • IE版本多的可爱_已迁移
  • VB二进制文件读写
  • 2017,3月14号 下午
  • 奇葩设计师贾伟打开你的想象力经济
  • 关于 WordPress 上传图片的各种问题解决办法
  • 《海量日志数据分析与应用》之社交数据分析:好友推荐
  • NiFi 在Raspberry Pi安装运行实践
  • svn变更自动触发jenkins构建工程-简单版
  • mockito static method wiki
  • angular学习第一篇-----环境搭建
  • ESLint简单操作
  • mysql 5.6 原生Online DDL解析
  • Octave 入门
  • SpingCloudBus整合RabbitMQ
  • 聊一聊前端的监控
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 三栏布局总结
  • 使用 QuickBI 搭建酷炫可视化分析
  • 温故知新之javascript面向对象
  • 协程
  • 一个完整Java Web项目背后的密码
  • 正则学习笔记
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (十五)使用Nexus创建Maven私服
  • (算法)前K大的和
  • (译) 函数式 JS #1:简介
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • .cfg\.dat\.mak(持续补充)
  • .NET CF命令行调试器MDbg入门(四) Attaching to Processes
  • .net Signalr 使用笔记
  • .NET面试题解析(11)-SQL语言基础及数据库基本原理
  • .net之微信企业号开发(一) 所使用的环境与工具以及准备工作
  • /dev下添加设备节点的方法步骤(通过device_create)
  • @cacheable 是否缓存成功_Spring Cache缓存注解
  • @modelattribute注解用postman测试怎么传参_接口测试之问题挖掘
  • [ 隧道技术 ] cpolar 工具详解之将内网端口映射到公网
  • [Angular] 笔记 18:Angular Router
  • [bbk5179]第66集 第7章 - 数据库的维护 03