欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2023-12-01 13:03:04
实现viewpager结合fragment实现无限循环切换,这里也是在适配器里面进行的,当然使用滑动监听也能够实现 import android.support....

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

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