Android——PagerAdapter和FragmentPagerAdapter和FragmentStatePagerAdapter区别
2017-02-20 00:46
483 查看
转自:http://blog.csdn.NET/dreamzml/article/details/9951577
ViewPager
ViewPager 如其名所述,是负责翻页的一个 View。准确说是一个 ViewGroup,包含多个 View 页,在手指横向滑动屏幕时,其
负责对 View 进行切换。为了生成这些 View 页,需要提供一个 PagerAdapter 来进行和数据绑定以及生成最终的 View 页。
PagerAdapter
PageAdapter 是 ViewPager 的支持者,ViewPager 将调用它来取得所需显示的页,而 PageAdapter 也会在数据变化时,通知
ViewPager。这个类也是FragmentPagerAdapter 以及 FragmentStatePagerAdapter 的基类。如果继承自该类,至少需要实现
instantiateItem(), destroyItem(), getCount() 以及 isViewFromObject()。
FragmentPagerAdapter
FragmentPagerAdapter 继承自 PagerAdapter。相比通用的 PagerAdapter,该类更专注于每一页均为 Fragment 的情况。该
类内的每一个生成的 Fragment 都将保存在内存之中,因此适用于那些相对静态的页,数量也比较少的那种;如果需要处理有很
多页,并且数据动态性较大、占用内存较多的情况,应该使用FragmentStatePagerAdapter。FragmentPagerAdapter 重载实
现了几个必须的函数,因此来自 PagerAdapter 的函数,我们只需要实现 getCount(),即可。且,由于
FragmentPagerAdapter.instantiateItem() 的实现中,调用了一个新增的虚函数 getItem(),因此,我们还至少需要实现一个
getItem()。因此,总体上来说,相对于继承自 PagerAdapter,更方便一些。
FragmentStatePagerAdapter
FragmentStatePagerAdapter 和前面的 FragmentPagerAdapter 一样,是继承子 PagerAdapter。但是,和
FragmentPagerAdapter 不一样的是,正如其类名中的 ‘State’ 所表明的含义一样,该 PagerAdapter 的实现将只保留当前页
面,当页面离开视线后,就会被消除,释放其资源;而在页面需要显示时,生成新的页面(就像 ListView 的实现一样)。这么实现
的好处就是当拥有大量的页面时,不必在内存中占用大量的内存。
ViewPager
ViewPager 如其名所述,是负责翻页的一个 View。准确说是一个 ViewGroup,包含多个 View 页,在手指横向滑动屏幕时,其
负责对 View 进行切换。为了生成这些 View 页,需要提供一个 PagerAdapter 来进行和数据绑定以及生成最终的 View 页。
PagerAdapter
PageAdapter 是 ViewPager 的支持者,ViewPager 将调用它来取得所需显示的页,而 PageAdapter 也会在数据变化时,通知
ViewPager。这个类也是FragmentPagerAdapter 以及 FragmentStatePagerAdapter 的基类。如果继承自该类,至少需要实现
instantiateItem(), destroyItem(), getCount() 以及 isViewFromObject()。
FragmentPagerAdapter
FragmentPagerAdapter 继承自 PagerAdapter。相比通用的 PagerAdapter,该类更专注于每一页均为 Fragment 的情况。该
类内的每一个生成的 Fragment 都将保存在内存之中,因此适用于那些相对静态的页,数量也比较少的那种;如果需要处理有很
多页,并且数据动态性较大、占用内存较多的情况,应该使用FragmentStatePagerAdapter。FragmentPagerAdapter 重载实
现了几个必须的函数,因此来自 PagerAdapter 的函数,我们只需要实现 getCount(),即可。且,由于
FragmentPagerAdapter.instantiateItem() 的实现中,调用了一个新增的虚函数 getItem(),因此,我们还至少需要实现一个
getItem()。因此,总体上来说,相对于继承自 PagerAdapter,更方便一些。
FragmentStatePagerAdapter
FragmentStatePagerAdapter 和前面的 FragmentPagerAdapter 一样,是继承子 PagerAdapter。但是,和
FragmentPagerAdapter 不一样的是,正如其类名中的 ‘State’ 所表明的含义一样,该 PagerAdapter 的实现将只保留当前页
面,当页面离开视线后,就会被消除,释放其资源;而在页面需要显示时,生成新的页面(就像 ListView 的实现一样)。这么实现
的好处就是当拥有大量的页面时,不必在内存中占用大量的内存。
相关文章推荐
- 55 Android Fragment_ViewPager 适配器 FragmentStatePagerAdapter
- android fragmentStateViewPagerAdapter 介绍
- PagerAdapter-FragmentPagerAdapter-FragmentStataePagerAdapter
- Android中ViewPager使用FragmentPagerAdapter(底部圆点)
- Android FragmentPagerAdapter vs FragmentStatePagerAdapter
- Android FragmentPagerAdapter翻译
- PagerAdapter、FragmentPagerAdapter、FragmentStatePagerAdapter区别
- Android FragmentPagerAdapter Example
- Android修炼之道—FragmentStatePagerAdapter和FragmentPagerAdapter
- Android FragmentPagerAdapter vs FragmentStatePagerAdapter
- Android-- FragmentStatePagerAdapter(分页)
- Android中ViewPager使用FragmentPagerAdapter(底部圆点)
- Android FragmentPagerAdapter和FragmentStatePagerAdapter的区别
- Android FragmentStatePagerAdapter Example
- PagerAdapter、FragmentPagerAdapter和FragmentStatePagerAdapter的关系
- Android FragmentPagerAdapter数据刷新notifyDataSetChanged没效果研究
- android ViewPager学习(三)通过FragmentPagerAdapter来创建ViewPager
- android ViewPager学习(四)FragmentStatePagerAdapter viewpager内fragment的替换
- Android中ViewPager使用FragmentPagerAdapter(底部圆点)
- Android FragmentPagerAdapter数据刷新notifyDataSetChanged没效果研究