ViewPager+FragmentPagerAdapter跟ViewPager+FragmentStatePagerAdapter的区别
2015-11-05 17:54
609 查看
1.ViewPager+FragmentPagerAdapter中的FragmentPagerAdapter适配器上会有一个FragmentTransaction ft =mFragmentManager.beginTransaction();他主要是对Fragment进行重新排序,但是本人弄了好久了也是没有用,因为他会把之前的Fragment集合放在一个FragmentManager管理器中,而很难去改变他们的顺序.对于这种方法本人还是不能搞定,如果有哪位好友告诉我的话,定当感激不尽.
2.后来发现有另外一个适配器FragmentStatePagerAdapter,他就比较好点,可以对之前的Fragment重新排序.
下列是FragmentstatePagerAdapter的一个实例:
4.进行比对的一个方法:
2.后来发现有另外一个适配器FragmentStatePagerAdapter,他就比较好点,可以对之前的Fragment重新排序.
下列是FragmentstatePagerAdapter的一个实例:
import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentStatePagerAdapter; import java.util.List; public class BaseFragmentPagerAdapter extends FragmentStatePagerAdapter { private List<Fragment> mFragments; public BaseFragmentPagerAdapter(FragmentManager fm,List<Fragment> fragments) { super(fm); mFragments = fragments; } @Override public int getCount() { return mFragments.size(); } @Override public Fragment getItem(int position) { return mFragments.get(position); } @Override public int getItemPosition(Object object) { return POSITION_NONE; } public void setItems(List<Fragment> fragmentList) { mFragments.clear(); if (fragmentList != null) { addItems(fragmentList); } else { notifyDataSetChanged(); } } public void addItems(List<Fragment> fragmentList) { if (fragmentList != null) { mFragments = fragmentList; notifyDataSetChanged(); } } }
4.进行比对的一个方法:
public void syncTabs(List<X> itemList) { List<X> items = mItems; List<Fragment> fragments = mFragments; List<View> views = mViews; mRadioGroupContent.removeAllViews(); mItems = itemList; mFragments = new ArrayList<Fragment>(); if (mAdapter != null) { int i = 0; for (X item : itemList) { int id = comparingNewInOldId(items, item); if (id < items.size()) { mRadioGroupContent.addView(views.get(id)); mFragments.add(fragments.get(id)); } else { mRadioGroupContent.addView(newTopView(i)); mFragments.add(newTopFragment(i)); } i++; } mAdapter.setItems(mFragments); } mViews = getNewTopView(); setSelect(); } public int comparingNewInOldId(List<X> oldItems,X newItem) { int index = 0; for (X item1 : oldItems) { String set1 = newItem.getName(); String set2 = item1.getName(); if (!TextUtils.isEmpty(set1) && !TextUtils.isEmpty(set2)) { if (set1.equals(set2)) { break; } } index += 1; } return index; } private void setSelect() { selectTab(columnSelectIndex);//选择那个TAB mViewPager.setCurrentItem(columnSelectIndex); }
相关文章推荐
- 现在写 PHP,你应该知道这些
- PHP一些验证字符串的函数
- PHP自动解压上传的rar文件
- PHP setcookie() 首次存储不上值
- 编译安装php
- mutilple output reduce cannot write
- PHP面向对象中类方法的两种类型:1、基本类型
- PHP 多维数组根据某个字段排序
- 推荐给开发者的20个优秀PHP框架
- 修改PHP上传文件的大小限制
- Socket类的getInputStream方法与getOutputStream方法的使用
- [转]FastCGI模式下PHP占用大量内存的解决办法
- PHP实现快排
- phpexcel基本属性及应用
- 【转】关于cgi、FastCGI、php-fpm、php-cgi
- 微信公众号智能识别回复的实现(基于ThinkPHP框架)
- PHP抓取百度贴吧邮箱v1.0
- PHP编译configure时常见错误
- php购物车类
- php GD库类