如何更新及替换ViewPager中的Fragment
来源:互联网 发布:企查查如何导出数据 编辑:程序博客网 时间:2024/06/05 06:05
在Android应用中遇到的问题?
1.viewpager和它的adapter是如何配合工作的?
声明:本文内容针对android.support.v4.app.*
ViewPager有两个adapter:FragmentPagerAdapter和FragmentStatePagerAdapter:
android.support.v4.app.FragmentPagerAdapter
继承自android.support.v4.view.PagerAdapter,每页都是一个Fragment,并且所有的Fragment实例一直保存在Fragment manager中。所以它适用于少量固定的fragment,比如一组用于分页显示的标签。除了当Fragment不可见时,它的视图层(view hierarchy)有可能被销毁外,每页的Fragment都会被保存在内存中。
android.support.v4.app.FragmentStatePagerAdapter
继承自android.support.v4.view.PagerAdapter,每页都是一个Fragment,当Fragment不被需要时(比如不可见),整个Fragment都会被销毁,除了saved state被保存外(保存下来的bundle用于恢复Fragment实例)。所以它适用于很多页的情况。
FragmentPagerAdapter和FragmentStatePagerAdapter对Fragment的管理略有不同,在详细考察二者区别之前,我们通过两种较为直观的方式先感受下:
FragmentPagerAdapter 继承自 PagerAdapter,该类内的每一个生成的 Fragment 都将保存在内存之中,因此适用于那些相对静态的页,数量也比较少的那种;
FragmentStatePagerAdapter 继承自 PagerAdapter, 当页面离开视线后,就会被消除,释放其资源;而在页面需要显示时,生成新的页面(就像 ListView 的实现一样)。这么实现的好处就是当拥有大量的页面时,不必在内存中占用大量的内存。
解决方案:
public class MyFragmentStatePagerAdapter extends FragmentStatePagerAdapter { private List<Fragment> fragments = null; private Context context; public MyFragmentStatePagerAdapter(Context context, FragmentManager fm, List<Fragment> fragments) { super(fm); this.context = context; this.fragments = fragments; notifyDataSetChanged(); } @Override public Fragment getItem(int position) { return fragments.get(position); } @Override public int getItemPosition(Object object) { return PagerAdapter.POSITION_NONE; } @Override public int getCount() { return fragments.size(); }}在获取数据的时候
buyFragments.clear(); for (int i = 0; i < flashSalesListBeen.size(); i++) { buyFragments.add(BuyingFragment.newInstance(flashSalesListBeen.get(i))); } if (titleAdapter == null) { titleAdapter = new MyFragmentStatePagerAdapter(getContext(), getActivity().getSupportFragmentManager(), buyFragments); mViewPager.setAdapter(titleAdapter); } else { titleAdapter.notifyDataSetChanged(); }
- 如何更新及替换ViewPager中的Fragment
- 如何更新及替换ViewPager中的Fragment
- 更新及替换ViewPager中的Fragment
- 重设、替换ViewPager中的Fragment
- 动态更新ViewPager中的Fragment
- ViewPager+Fragment布局中的Fragment数据更新
- Fragment+ViewPager 替换TabActivity
- Viewpager+Fragment替换TabHost
- 【安卓笔记】ViewPager+Fragment布局中的Fragment数据更新
- 实现ViewPager中的Fragment无感知动态替换
- 实现ViewPager中的Fragment无感知动态替换
- Viewpager+Fragment 数据更新
- Viewpager+fragment结构,如何获取fragment中的控件
- Android ViewPager + Fragment 替换 TabActivity
- Android ViewPager + Fragment 替换 TabActivity
- ViewPager动态替换数据源------Fragment
- 更换ViewPager中的Adapter后Fragment不更新问题
- viewpager+fragment 如何管理fragment
- LibFM使用手册中文版
- 几何画板做直线定向平移运动的方法
- WebView详解与简单实现Android与H5互调
- tomcat多域名配置方法
- Android M新权限开发
- 如何更新及替换ViewPager中的Fragment
- C++中两个类相互包含引用问题
- uiautomator在使用scrollable遇到页面有两个可滑动控件的解决方法
- ActiveMQ开发简明教程
- QTP基本使用——WORD
- nodejs中npm 安装无法进行及切换淘宝源的方法
- RCC外设的学习和理解
- 将mongodb中的数据导入mysqld
- javascript学习之函数(7)—— 函数 声明定义