实现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,得单独处理

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

ViewPager结合Fragment进行无限滑动的更多相关文章

  1. android: 结合BottomNavigationView、ViewPager和Fragment 实现左右滑动的效果

    主界面:MainActivity package com.yongdaimi.android.androidapitest; import android.os.Bundle; import andr ...

  2. ViewPager 简单实现左右无限滑动.

    只需在在适配器中将getCount 给一个较大的值, 然后将currentItem 设为值的一半 就可以伪实现 无限循环. private static final int PAGE_COUNT = ...

  3. Android开发之ViewPager+ActionBar+Fragment实现响应式可滑动Tab

     今天我们要实现的这个效果呢,在Android的应用中十分地常见,我们可以看到下面两张图,无论是系统内置的联系人应用,还是AnyView的阅读器应用,我们总能找到这样的影子,当我们滑动屏幕时,Tab可 ...

  4. 【Android 界面效果27】利用ViewPager、Fragment、PagerTabStrip实现多页面滑动效果

    本文主要介绍如何利用ViewPager.Fragment.PagerTabStrip实现多页面滑动效果.即google play首页.新浪微博消息(at.评论.私信.广播)页面的效果.ViewPage ...

  5. ViewPager结合view无限滑动

    使用viewPager进无限滑动,这里的实现是在适配器里面进行,当然在外头使用滑动监听也行. import android.support.v4.view.PagerAdapter; import a ...

  6. ViewPager无限滑动

    2016-6-19 前言 View轮播效果在app中很常见,一想到左右滑动的效果就很容易想到使用ViewPager来实现.对于像我们常说的banner这样的效果,具备无限滑动的功能是可以用ViewPa ...

  7. Android 利用ViewPager、Fragment、PagerTabStrip实现多页面滑动效果

    本文主要介绍如何利用ViewPager.Fragment.PagerTabStrip实现多页面滑动效果.即google play首页.新浪微博消息(at.评论.私信.广播)页面的效果.ViewPage ...

  8. ViewPager之Fragment页面切换

    一.概述 ViewPager是android-support-v4中提供的类,它是一个容器类,常用于页面之间的切换. 继上篇文章<ViewPager之引导页>之后,本文主要介绍ViewPa ...

  9. ViewPager和Fragment的结合使用fragment里包含着listview的常见问题

    在我们开发的过程中可能会遇到类似需求,我们需要做一个左右滑动的tab导航,这个时候有些朋友可能会想到viewpager和fragment的结合来实现这个功能:当然实现的方法不单单着一种.我们这个随笔讨 ...

随机推荐

  1. Apache Lucene全局搜索引擎入门教程

    Lucene简介 Lucent:Apache软件基金会Jakarta项目组的一个子项目,Lucene提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻.在Java开发环境里Lucene是一个成熟 ...

  2. ubuntu系统给用户增加root权限

    在安装软件包的时候,会提示没有sudo权限. eg : sudo apt-get install golang 解决方法 进入有root权限的用户 eg: su root 并根据提示输入密码 sudo ...

  3. Hystrix 停止开发。。。Spring Cloud 何去何从?

    栈长得到消息,Hystrix 停止开发了... 大家如果有对 Hystrix 不清楚的,请看下这篇文章:分布式服务防雪崩熔断器,Hystrix理论+实战. 来看下 Hystrix 停止开发官宣: ht ...

  4. python高级-面向对象(11)

    一.面向过程和面向对象 面向过程:根据业务逻辑从上到下写代码 面向对象:将数据与函数绑定到一起,进行封装,这样能够更快速的开发程序,减少了重复代码的重写过程 二.类和对象 1.类的概念 面向对象编程的 ...

  5. jenkins 'cordova' command not recognised on Jenkins Windows slave

    在jenkins里构建ionic项目.在构建Execute Windows bath command 执行 cordova 跟ionic 命令失败.但是运行cmd却能够执行成功. 惊不惊喜 意不意外, ...

  6. Tomcat中server.xml配置详解(2)

    Tomcat中配置文件详解 Server.xml配置文件说明,以及Tomcat组件的说明 Tomcat服务器是由一系列可以配置的组件构成,其中核心组件是Catalina Servlet,它是最顶层组件 ...

  7. [python]使用virtualenvWrapper

    什么是virtualenv virtualenv是python的环境管理工具,用于隔离python的运行环境.也就是说,一个项目可以有一个属于这个项目的运行环境,从而避免了因为依赖不同的模块而产生的错 ...

  8. .Net Self Hosting 的几种方式

    写在前面: IIS是Windows平台非常关键的组件,它是微软自带的Web服务器,可以很方便的帮助我们运行起一个网站,WebApi等服务,提供给外部来访问.即使它被很多java或者ruby的同学各种鄙 ...

  9. Kubernetes 弹性伸缩全场景解析 (一)- 概念延伸与组件布局

    传统弹性伸缩的困境 弹性伸缩是Kubernetes中被大家关注的一大亮点,在讨论相关的组件和实现方案之前.首先想先给大家扩充下弹性伸缩的边界与定义,传统意义上来讲,弹性伸缩主要解决的问题是容量规划与实 ...

  10. 使用字面量,比new更加有效

    参考原文:http://www.cnblogs.com/yxf2011/archive/2012/04/01/2428225.html http://www.cnblogs.com/mushishi/ ...