首页 > 系统 > Android > 正文

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

2019-12-12 03:26:41
字体:
来源:转载
供稿:网友

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

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表