您的位置:首页 > 其它

viewPager嵌套fragment的数据刷新

2017-07-25 15:47 483 查看
        最近在做搜索的开发,遇到viewPager嵌套fragment的数据刷新的问题,在网上搜了搜没有搜到自己想要的答案,就自己写了一个,亲测有效,希望可以帮到遇到这类问题的小伙伴;

        刚开始的时候我在我的baseFragment里添加了一个刷新的方法,其他的fragment继承:

public abstract class SearchBaseFragment extends BaseFragment {
public abstract void upDate(String data) ;
}


现在看看我的其中一个SearchFragment实现:

/**
* 更新数据
* @param data
*/
@Override
public void upDate(String data) {
this.data = data;
}


当数据变化的时候,刷新viewpager,viewpager刷新的方法,有几种这里我用的是重写

public int getItemPosition(Object object) {
//POSITION_NONE 刷新所有的 Item
return PagerAdapter.POSITION_NONE;
}

什么时候调用upDate()方法呢,调用了viewpager的notifychanged的方法后viewpager会重走instantiateItem方法,在这个方法里我是这么做的

@Override
public Object instantiateItem(ViewGroup container, int position) {
searchBaseFragment = ((SearchBaseFragment) super.instantiateItem(container, position));
if (mData!=null&&mData.length()>0){
searchBaseFragment.upDate(mData);
}
return searchBaseFragment;
}

这样我们要更新的数据通过fragment里了,不知道同学们看到我的SearchFragment里的upDate方法会不会有疑问,为什么只是接收一下数据,并没有做实质性的操作,这是因为viewpager刷新的时候fragment会重走oncreate方法,所以你在update里的用的对象会为空,所以你只需在此方法里做接收,在SearchFragment里我会初始化数据后,更新数据的时候直接时候传过来的data值即可。

是不是很简单呢,第一次写博客,希望能帮到你!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐