FragmentPagerAdapter notifyDataSetChanged 不起作用的彻底解决方式

原创 2016年05月30日 15:11:52

往上一堆乱七八糟的,比如修改initiateItem,增加flag等,但是其实最好最简单的也是

把FragmentPagerAdapter换成 

FragmentStatePagerAdapter
这样就解决了不更新的问题

public class MyFragmentAdapter extends FragmentStatePagerAdapter {
   private int length ;

   private ArrayList<Fragment> mFragments;//碎片数组
   private int mCount;
   FragmentManager fm ;
   public MyFragmentAdapter(FragmentManager fm , ArrayList<Fragment> mFragments) {
      super(fm);
      this.fm = fm;
      this.length = mFragments.size();
      this.mFragments = mFragments;
      FragmentTransaction mTransaction = fm.beginTransaction();
   }

   @Override
   public int getItemPosition(Object object) {
      return POSITION_NONE; //这个是必须的
   }

   @Override
   public Fragment getItem(int position) {
      int size = mFragments.size();
      if(position >= size)
         return mFragments.get(size - 1);
      return mFragments.get(position);
   }

   @Override
   public int getCount() {
      if(mCount > 0) {
         return mCount;
      } else {
         return length;
      }
   }

   public void setFragments(ArrayList<Fragment> fragments) {
      if(this.mFragments != null){
         FragmentTransaction ft = fm.beginTransaction();
         for(Fragment f:this.mFragments){
            ft.remove(f);
         }
         ft.commit();
         ft=null;
         fm.executePendingTransactions();
      }
      this.mFragments = fragments;
      notifyDataSetChanged();
   }

   public void setMaxCount(int count) {
      if(mCount < length) {
         if(mCount != count) {
            mCount = count;
            notifyDataSetChanged();
         }
      }
   }

   public void setmFragments(ArrayList<Fragment> mFragments) {
      this.mFragments = mFragments;
   }
}

详细请参考

http://stackoverflow.com/questions/10849552/update-viewpager-dynamically

版权声明:本文为博主原创文章,未经博主允许不得转载。

FragmentPagerAdapter刷新fragment最完美解决方案

先感谢kingjxl2006的博客
  • z13759561330
  • z13759561330
  • 2014年11月03日 10:44
  • 101739

为什么调用 FragmentPagerAdapter.notifyDataSetChanged() 并不能更新其 Fragment?

在一个 Android 应用中,我使用  FragmentPagerAdapter 来处理多 Fragment 页面的横向滑动。不过我碰到了一个问题,即当 Fragment 对应的数据集发生改变时,...
  • dyllove98
  • dyllove98
  • 2013年04月15日 23:20
  • 10948

关于FragmentPagerAdapter通知数据改变不刷新的问题

FragmentPagerAdapter刷新fragment最完美解决方案     先感谢kingjxl2006的博客文章《Android FragmentPagerAdapter数据刷新n...
  • u012504392
  • u012504392
  • 2016年12月03日 14:07
  • 320

ViewPager中使用FragmentPagerAdapter.notifyDataSetChanged无法更新当前Fragment解决方案

最近,在使用ViewPager和FragmentPagerAdapter时遇到如下问题(为了说明问题先上图): 图一 图二 功能描述:该页面为ViewPager的实现,且一共有两个Fragment...
  • niuzhucedenglu
  • niuzhucedenglu
  • 2016年03月13日 21:35
  • 1041

Android FragmentPagerAdapter数据刷新notifyDataSetChanged没效果研究或不执行OnCreatView方法导致界面不刷新

今天遇到一个问题是Fragment+ViewPager搭配使用的时候,页面刷新不执行OnCreateView方法到时,数据是有刷新了,但是UI界面没有刷新,还是原来的数据显示。 下面先说说我项目中的...
  • jiang547860818
  • jiang547860818
  • 2017年01月12日 17:29
  • 1546

ViewPager中使用FragmentPagerAdapter.notifyDataSetChanged无法更新当前Fragment解决方案

  • 2016年03月14日 20:26
  • 11.73MB
  • 下载

Android FragmentPagerAdapter数据刷新notifyDataSetChanged没效果研究

android3.0之后提出fragment概念正逐渐取代tabhost的地位,support-v4包也提供了很好使用的viewpager类。不多说。了解过fragment之后你会发现比tabhost...
  • u010897392
  • u010897392
  • 2016年11月23日 19:34
  • 405

调用FragmentPagerAdapter的notifyDataSetChanged()方法视图未更新

学校在考完试后给我们加了一周的Android课,本来考完试很累了,还一天不让休息,天天起早去上课π__π。最后交课程设计, 模仿彩虹天气写一个天气应用,下面是我们组做的: 城市切换使用的Vi...
  • daditao
  • daditao
  • 2016年03月30日 22:17
  • 681

FragmentPagerAdapter刷新数据原理分析与解决

我在做一个页面的时候,viewpager + 3个fragment来实现,因适配器是使用FragmentPagerAdapter。后来我发现一个问题,当我离开这个界面,再重新进入的时候,这个界面的数据...
  • jeffleo
  • jeffleo
  • 2016年07月24日 00:18
  • 982

Android-ViewPager中调用notifyDataSetChanged失效问题--setItemPosition--POSITION_NONE

最基本的方法:针对于child view比较简单的情况(例如仅有TextView、ImageView等,没有ListView等展示数据的情况),可以在自己的Adapter中加入代码: @Overri...
  • sinat_18268881
  • sinat_18268881
  • 2016年04月02日 20:17
  • 1200
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:FragmentPagerAdapter notifyDataSetChanged 不起作用的彻底解决方式
举报原因:
原因补充:

(最多只允许输入30个字)