最近有个需求是做FragmentPagerAdapter+Tablayout+数据库。每次a界面添加东西到b界面,就更新b界面的RecycleView。

Fragement是默认会提前加载好界面(因为我只有2个界面)所以全部默认加载好了。

 

 setOnPageListenner已经被谷歌取消了,新加入了一个addOnPageChangeListener,在这里设置好监听就能完成更新以后加载。

错误方法1:

根本没用

        mFragmentsAdapter.notifyDataSetChanged();

错误方法2:(也是网上很流行的,在stackoverflow里面也是这样写的)

返回POSITION_NODE并且更改destroy,方法有的时候有用有的时候没用,进行刷新的时候会出现卡顿,白屏。

@Override 
public int getItemPosition(Object object) {return POSITION_NONE;
}
@Override
public void destroyItem(ViewGroup container,int position,Object object){
  super.destroyItem(container, position, object);
  FragmentTransaction bt = fm.beginTransaction();
  bt.remove((Fragment)object);
  bt.commit();
}

  

 

 

正确的解决方法应该是

添加一个setFragments方法和设置POSITION_NODE

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