Android学习——ViewPager的使用(一)

这一节介绍使用ViewPager,加载ViewPager主要有三部分,数据源、适配器和ViewPager与适配器关联。其中数据源分为View对象和Fragment对象,这一节先来介绍View对象。

 

数据源


加载View对象,数据源自然是View的集合,这里通过View的inflate方法来加载布局文件所对应的view对象,并添加到List集合中作为数据源。

fragmentList=new ArrayList<>();
fragmentList.add(new Fragment1());
fragmentList.add(new Fragment2());
fragmentList.add(new Fragment3());
fragmentList.add(new Fragment4());
viewList=new ArrayList<View>();
        View view1 = View.inflate(this, R.layout.view_1, null);
        View view2 = View.inflate(this, R.layout.view_2, null);
        View view3 = View.inflate(this, R.layout.view_3, null);
        View view4 = View.inflate(this, R.layout.view_4, null);
        View view5 = View.inflate(this, R.layout.view_5, null);
        View view6 = View.inflate(this, R.layout.view_6, null);
        viewList.add(view1);
        viewList.add(view2);
        viewList.add(view3);
        viewList.add(view4);
        viewList.add(view5);
        viewList.add(view6);

 


二、适配器

适配器,简单来说就是声明对数据源的一系列操作,在页面滑动到不同位置时,加载出对应的界面。利用View对象加载适配器时,需要新建一个类,并继承PagerAdapter父类。

public class MyFragmentAdapter extends FragmentPagerAdapter {

    private  List<Fragment> fragmentList;

    public MyFragmentAdapter(FragmentManager fm,List<Fragment> fragmentList) {
        super(fm);
        this.fragmentList=fragmentList;
    }

    @Override
    public Fragment getItem(int position) {
        return fragmentList.get(position);
    }

    @Override
    public int getCount() {
        return fragmentList.size();
    }

}
public class MyPageAdapter extends PagerAdapter

 

初始化其构造方法,由于我们需要获取数据源,故构造方法中需要得到对应的数据源。

public MyPageAdapter(List<View> viewList){
        this.viewList=viewList;
    }

 

重写下面四个方法:

getCount方法,返回获取到的数据源的个数:

@Override
    public int getCount() {
        return viewList.size();
    }

 

isViewFromObject,按如下写好即可

@Override
    public boolean isViewFromObject(View view, Object object) {
        return view==object;
    }

 

instantiateItem,在加载页面布局的时候调用的方法

@Override
    public Object instantiateItem(ViewGroup container, int position) {
        container.addView(viewList.get(position));
        return viewList.get(position);
    }

 

destoryItem,在销毁页面布局时调用的方法

@Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView(viewList.get(position));
    }

 


三、ViewPager与适配器关联

只需要在Activity中,实例化适配器和ViewPager控件,并用setAdapter方法关联即可

pager= (ViewPager) findViewById(R.id.pager);
        MyPageAdapter myadapter = new MyPageAdapter(viewList);
        pager.setAdapter(myadapter);
posted @ 2017-01-19 22:58  JinxMiracle  阅读(142)  评论(0编辑  收藏  举报