这一节介绍使用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);

最新文章

  1. Jquery(1)
  2. 开发 ASP.NET vNext 续篇:云优化的概念、Entity Framework 7.0、简单吞吐量压力测试
  3. C#的IPAddress IPEndPoint
  4. php实现留言功能
  5. tyvj1614 魔塔魔塔!
  6. freemarker 实现对URL的安全编码
  7. Web前端测试题
  8. php学习笔记:利用gd库生成图片,并实现随机验证码
  9. Java中的继承与组合(转载)
  10. RTSP协议、RTMP协议、HTTP协议的区别
  11. IOS 实现自定义的导航栏背景以及自定义颜色的状态栏(支持7.0以及低版本)
  12. PHP 表单 - 验证邮件和URL
  13. mysql 套事物实例
  14. Array(数组)的使用
  15. 使用ControllerAdvice注意事项,Ambiguous @ExceptionHandler method mapped for [class org.springframework.web.bind.MethodArgumentNotValidException]
  16. javascript入门篇(二)
  17. zabbix3.0监控Windows服务器
  18. 【软件工程1916|W(福州大学)_助教博客】团队第四次作业(第7次)成绩公示
  19. 潭州课堂25班:Ph201805201 爬虫基础 第七课 Python与常见加密方式 (课堂笔记)
  20. Tomcat中Url中文乱码解决办法

热门文章

  1. python之文件读写(2)
  2. .NET 海量数据并发处理
  3. CodeForces 1043D Mysterious Crime 区间合并
  4. 可持久化Treap 赛前摸鱼笔记
  5. HDU - 1907 anti-SG
  6. C++ GUI Qt4编程(09)-3.3spreadsheet-toolbar
  7. C++ GUI Qt4编程(06)-2.3sort
  8. PIE SDK算法的自定义扩展
  9. Qt客户端阿里云服上传文件
  10. 文献综述二:UML技术在行业资源平台系统建模中的应用