FragmentPagerAdapter动态删除和调整fragment位置的问题
来源:互联网 发布:自动装修软件 编辑:程序博客网 时间:2024/06/10 01:30
网上对FragmentPagerAdapter讲解的博客已经很多了,这里只讲重点。
设置POSITION_NONE的目的是可以执行instantiateItem,动态刷新fragment就必须要执行这一步,所以添加如下代码:
@Overridepublic int getItemPosition(Object object) { return POSITION_NONE;}
instantiateItem在执行时会FragmentManager里面查找是否已存在对应的fragment,如果不存在,才会执行getItem,先看一下源码:
@Overridepublic Object instantiateItem(ViewGroup container, int position) { if (mCurTransaction == null) { mCurTransaction = mFragmentManager.beginTransaction(); } final long itemId = getItemId(position); // Do we already have this fragment? String name = makeFragmentName(container.getId(), itemId); Fragment fragment = mFragmentManager.findFragmentByTag(name); if (fragment != null) { if (DEBUG) Log.v(TAG, "Attaching item #" + itemId + ": f=" + fragment); mCurTransaction.attach(fragment); } else { fragment = getItem(position); if (DEBUG) Log.v(TAG, "Adding item #" + itemId + ": f=" + fragment); mCurTransaction.add(container.getId(), fragment, makeFragmentName(container.getId(), itemId)); } if (fragment != mCurrentPrimaryItem) { fragment.setMenuVisibility(false); fragment.setUserVisibleHint(false); } return fragment;}
为了每一个页面可以动态的获取我们想要的fragment,就必须要它执行getItem,所以需要修改getItemId,代码如下:
@Overridepublic long getItemId(int position) { return fragments.get(position).hashCode();}
至此已经修改完毕,只需要变更list,然后notifyDataSetChanged,就可以达到想要的效果了,至于FragmentPagerAdapter的原理和每个方法的作用,就不讲解了,网上很多,就不骚扰搜索引擎了,over!!!
阅读全文
0 0
- FragmentPagerAdapter动态删除和调整fragment位置的问题
- FragmentPagerAdapter 动态删除的问题
- ViewPager设置完FragmentPagerAdapter后动态的进行增加删除Fragment
- viewpager + fragmentpageradapter 切换fragment产生的问题
- FragmentPagerAdapter调用Fragment的空指针问题
- FragmentPagerAdapter中的fragment类型问题
- Fragment内嵌套使用FragmentPagerAdapter出现空白页的问题
- 解决RadioButton+FragmentPagerAdapter+Fragment切换页面数据加载的问题
- 动态调整对话框控件位置和大小
- TabLayout与ViewPager和Fragment、FragmentPagerAdapter的合用
- TabLayout与ViewPager和Fragment、FragmentPagerAdapter的配合使用
- TabLayout与ViewPager和Fragment、FragmentPagerAdapter的合用
- FragmentPagerAdapter+fragment错位的问题解决
- Fragment与FragmentPagerAdapter的使用
- 动态调整CDialogBar的停靠位置
- 动态修改viewpager里面的fragment(添加和删除)
- FragmentPagerAdapter中Fragment不能刷新问题
- 正确使用FragmentPagerAdapter,避免Fragment重叠问题
- POJ3320 Jessica's Reading Problem
- Qt中的c++小知识点
- slice和splice的区别
- angularjs学习笔记二——代码结构简介
- 并发工具类:同步屏障CyclicBarrier
- FragmentPagerAdapter动态删除和调整fragment位置的问题
- 给easyui-datebox设置隐藏或者不可用
- Elasticsearch Date类型使用技巧
- MFC应用程序中嵌入一个谷歌cef浏览器
- 100-广播
- 括号序列
- windows下面安装redis及php_redis.dll拓展
- OSGI开发(基础篇)
- 递归求裴波那契数列