viewPager嵌套fragment的数据刷新

        最近在做搜索的开发,遇到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值即可。

是不是很简单呢,第一次写博客,希望能帮到你!!!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值