android中ViewPager结合Fragment进行无限滑动

发布时间 - 2026-01-11 00:03:59    点击率:

实现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);
  }

}

经过实际检验,要传进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)
      {}
    });

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# viewpager无限滑动  # viewpager  # fragment  # 无限滑动的viewpager  # Android中TabLayout+ViewPager 简单实现app底部Tab导航栏  # Android自定义ViewPagerIndicator实现炫酷导航栏指示器(ViewPager+F  # Android ViewPager实现轮播图效果  # Android实现基于ViewPager的无限循环自动播放带指示器的轮播图CarouselFigur  # Android ViewPager加载图片效果  # Android中ViewPager获取当前显示的Fragment  # 详解Android_性能优化之ViewPager加载成百上千高清大图oom解决方案  # Android实现Tab布局的4种方式(Fragment+TabPageIndicator+View  # Android画廊效果之ViewPager显示多个图片  # Android使用自定义PageTransformer实现个性的ViewPager动画切换效果  # 翻页  # 落在  # 来实现  # 是在  # 在这里  # 是因为  # 便可  # 可以直接  # 建立一个  # 使用这个  # 大家多多  # 往右  # 器里  # 这种方法  # 只要在  # lt  # gt  # pre  # adapter  # private 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: SQL查询语句优化的实用方法总结  Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门  如何彻底删除建站之星生成的Banner?  Laravel怎么使用artisan命令缓存配置和视图  ,交易猫的商品怎么发布到网站上去?  如何在景安云服务器上绑定域名并配置虚拟主机?  Win11关机界面怎么改_Win11自定义关机画面设置【工具】  Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID  谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复  大学网站设计制作软件有哪些,如何将网站制作成自己app?  Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】  MySQL查询结果复制到新表的方法(更新、插入)  bing浏览器学术搜索入口_bing学术文献检索地址  如何在建站之星网店版论坛获取技术支持?  javascript中的数组方法有哪些_如何利用数组方法简化数据处理  js代码实现下拉菜单【推荐】  Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程  详解vue.js组件化开发实践  Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤  Laravel如何处理CORS跨域请求?(配置示例)  Laravel如何实现API速率限制?(Rate Limiting教程)  高防服务器:AI智能防御DDoS攻击与数据安全保障  Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】  如何用好域名打造高点击率的自主建站?  WordPress 子目录安装中正确处理脚本路径的完整指南  微信小程序 配置文件详细介绍  Mybatis 中的insertOrUpdate操作  详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南  Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】  如何用腾讯建站主机快速创建免费网站?  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  浅析上传头像示例及其注意事项  Linux系统命令中screen命令详解  如何确保FTP站点访问权限与数据传输安全?  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  Linux系统运维自动化项目教程_Ansible批量管理实战  如何在橙子建站上传落地页?操作指南详解  Laravel如何为API生成Swagger或OpenAPI文档  如何为不同团队 ID 动态生成多个非值班状态按钮  JavaScript如何实现倒计时_时间函数如何精确控制  ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法  Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南  如何在建站主机中优化服务器配置?  HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】  如何用5美元大硬盘VPS安全高效搭建个人网站?  Claude怎样写约束型提示词_Claude约束提示词写法【教程】  Laravel如何从数据库删除数据_Laravel destroy和delete方法区别  Laravel怎么使用Intervention Image库处理图片上传和缩放  如何在万网ECS上快速搭建专属网站?  Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】