android ViewPager三种适配器
来源:互联网 发布:linux 当前时间 编辑:程序博客网 时间:2024/05/19 12:15
- 1.PagerAdapter
pagerAdapter是FragmentPagerAdapter以及FragmentStatePagerAdapter的基类。我们自定义适配器继承该类时,至少需要实现:
- instantiateItem(ViewGroup, int)
- destroyItem(ViewGroup, int, Object)
- getCount()
- isViewFromObject(View, Object)
public class ViewPagerAdapter extends PagerAdapter{ private List<View> mList; public ViewPagerAdapter(List list) { this.mList = list; } /** * 返回当前有效视图的个数 */ @Override public int getCount() { return mList.size(); } /** * 该函数用来判断instantiateItem(ViewGroup, int)函数所返回来的Key与一个页面视图是否是代表的同一个视图(即它俩是否是对应的,对应的表示同一个View) * @return 如果对应的是同一个View,返回True,否则返回False。 */ @Override public boolean isViewFromObject(View view, Object object) { return view == object; } /** * 这个函数的实现的功能是创建指定位置的页面视图。适配器有责任增加即将创建的View视图到这里给定的 * container中,这是为了确保在finishUpdate(viewGroup)返回时这已经被完成 * @return 返回一个代表新增视图页面的Object(Key),这里没必要非要返回视图本身,也可以这个页面的 * 其它容器(只要可以与新增加的view一一对应即可) */ @Override public Object instantiateItem(ViewGroup container, int position) { container.addView(mList.get(position)); return mList.get(position); } /** * 该方法实现的功能是移除一个给定位置的页面。适配器有责任从容器中删除这个视图。这是为了确保 * 在finishUpdate(viewGroup)返回时视图能够被移除 */ @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView(mList.get(position)); }}
- 2.FragmentPagerAdapter
FragmentPagerAdapter是PagerAdapter中的其中一种实现。它将每一个页面表示为一个 Fragment,并且每一个Fragment都将会保存到fragment manager当中。
这种pager十分适用于有一些静态fragment,例如一组tabs,的时候使用。每个页面对应的Fragment当用户可以访问的时候会一直存在内存中,但是,当这个页面不可见的时候,view hierarchy将会被销毁。这样子会导致应用程序占有太多资源。当页面数量比较大的时候,建议使用 FragmentStatePagerAdapter。
public class ViewPagerAdapter extends FragmentPagerAdapter { private List<Fragment> mList; public ViewPagerAdapter(FragmentManager fm,List<Fragment> list) { super(fm); mList = list; } /** * 返回指定位置的Fragment * @param position * @return */ @Override public Fragment getItem(int position) { return mList.get(position); } @Override public int getCount() { return mList.size(); }}
- 3.FragmentStatePagerAdapter
当使用FragmentStatePagerAdapter 时,实现将只保留当前页面,当页面离开视线后,就会被消除,释放其资源;而在页面需要显示时,生成新的页面。这么实现的好处就是当拥有大量的页面时,不必在内存中占用大量的内存。
public class ViewPagerAdapter extends FragmentStatePagerAdapter { private List<Fragment> mList; public ViewPagerAdapter(FragmentManager fm,List<Fragment> list) { super(fm); mList = list; } @Override public Fragment getItem(int position) { return mList.get(position); } @Override public int getCount() { return mList.size(); }}
阅读全文
1 0
- android ViewPager三种适配器
- 三种Android适配器
- android ViewPager适配器
- android中的三种适配器
- android listview 三种适配器设置
- android之Viewpage三种适配器详解
- Android:ViewPager适配器PagerAdapter的使用
- Android——ViewPager及适配器PagerAdapter...
- Android:关于ViewPager 适配器notifyDataSetChanged不能刷新
- Android ViewPager适配器 PagerAdapter的使用
- Android学习(十八)ViewPager适配器编写
- Android ViewPager之tab万能适配器
- viewPager适配器
- 三.viewPager +Handler 适配器 无限轮播 不加小白点
- Android 适配器教程(三)
- Android 中ArrayAdapter,SimpleAdapter,BaseAdapter三种适配器的使用
- Android 中ArrayAdapter,SimpleAdapter,BaseAdapter三种适配器的使用
- android学习三:ViewPager使用
- faster rcnn cudnn版本不兼容问题
- Page的ResolveClientUrl与ResolveUrl读取路径
- linux系统进程创建过程详解
- 数据结构与算法书中,字谜游戏java实现
- Subarray GCD
- android ViewPager三种适配器
- bootstrap表格和按钮样式
- hibernate的基本配置--第二天
- mybatis 详解
- 7:渐变(背景-属性)-1.1.3线性渐变
- 手写识别项目(7.15)
- caffe(7) 训练自己的CNN网络—基于自己建立的数据集
- 富文本编辑器XHEditor实现
- MFC控件使用之一 ListCtrl的使用