首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >android之FragmentPagerAdapter和FragmentStatePagerAdapter

android之FragmentPagerAdapter和FragmentStatePagerAdapter

作者头像
李小白是一只喵
发布2020-12-09 14:21:05
发布2020-12-09 14:21:05
2.2K0
举报
文章被收录于专栏:算法微时光算法微时光

image.png

FragmentPagerAdapter

FragmentPagerAdapter是android-support-v4支持包里面出现的一个新的适配器,继承自PagerAdapter,是专门用来给支持包中出现的ViewPager进行数据适配的。

FragmentPagerAdapter,见名知意,这个适配器就是用来实现Fragment在ViewPager里面进行滑动切换的,因此,如果我们想实现Fragment的左右滑动,可以选择ViewPager和FragmentPagerAdapter实现。

FragmentPagerAdapter拥有自己的缓存策略,当和ViewPager配合使用的时候,会缓存当前Fragment以及左边一个、右边一个,一共三个Fragment对象。

原理

假如有三个Fragment,那么在ViewPager初始化之后,3个fragment都会加载完成。

中间的Fragment在整个生命周期里面只会加载一次,当最左边的Fragment处于显示状态,最右边的Fragment由于超出缓存范围,会被销毁,当再次滑到中间的Fragment的时候,最右边的Fragment会被再次初始化。

FragmentPagerAdapter会对我们浏览过Fragment进行缓存,保存这些界面的临时状态,这样当我们左右滑动的时候,界面切换更加的流畅。但是,这样也会增加程序占用的内存。如果应用场景是更多的Fragment,请使用FragmentStatePagerAdapter。

代码实例:

代码语言:javascript
复制
FragmentPagerAdapter adapter = new FragmentPagerAdapter(
                getSupportFragmentManager()) {
 
            @Override
            public int getCount() {
                return fragments.size();
            }
 
            @Override
            public Fragment getItem(int position) {
                return fragments.get(position);
            }
            }
 
        };

其中: getCount()返回的是ViewPager页面的数量,getItem()返回的是要显示的fragent对象。

FragmentStatePagerAdapter

FragmentStatePagerAdapter和FragmentPagerAdapter 类似。

继承 PagerAdapter。该 PagerAdapter 的实现将只保留当前页面,当页面离开视线后,就会被消除,释放其资源;而在页面需要显示时,生成新的页面。这么实现的好处就是当拥有大量的页面时,不必在内存中占用大量的内存。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • FragmentPagerAdapter
    • 原理
  • FragmentStatePagerAdapter
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档