首页 > 如何跨Fragment使用notifyDataSetChanged()方法?

如何跨Fragment使用notifyDataSetChanged()方法?

问题是这样的,我有3个Fragment构成一个TabLayout,分别称为Fragment A、B、C。
每个Fragment都由一个RecyclerView构成。

因为RecyclerView在Fragment主类里的OnClick()方法不能获取点击的Item里的位置,所以要在该Fragment的Adapter类中的ViewHolder中写OnClick()方法。

那么当我点击了Fragment C的一个item的时候,如何用notifySetChanged()通知Fragment A更新它的数据呢?


1,实现自己的接口让activity调用,然后用activity去调用另一个fragment
2,广播,这里推荐local广播


EventBus,Otto值得你拥有


首先

Fragment主类里的OnClick()方法不能获取点击的Item里的位置
这里可以写一个接口出来,这样就可以在Fragment里设置点击事件,效果和ListView的类似,可以获得点击的item。

然后,这几个Fragment都寄生于同一个Activity,Fragment可以将事件传递给Activity,Activity再去让另一个Fragment里的Adapter执行Notifify。


还可以使用EventBus来进行消息的传递,感觉上会比广播简单一些,
再或者,可以在CFragment里去获得AFragment的对象,直接进行操作,也是通过Activity进行传递的。

但是有个疑问,ViewPager默认是加载左右2个Fragment的,那么CFragment显示出来的时候,A应该是被回收掉的,那A再显示出来的时候,A的数据应该是最新的了呀,也就不需要Notify了


在c中构造一个getAdapter方法获取c中的的adapter,在A中获取c的实例 调用才c中的getAdapter方法 获取c的adapter 就可以执行notifySetChanged()方法


点击C的时候在对应的activity里应该会有回调对不对,然后在那个回调方法里用A的实例执行对应的方法咯


分场合吧。

  1. Fragment多,采用事件总线Otto或者EventBus

  2. Fragment少,还要耦合轻点的,用Activity作为媒介接口;

  3. 不在乎耦合的,自订接口或者getTargetFragment() and setTargetFragment()


回调 或者设置个监听 在或者观察者 在或者通知他的主activity去刷新

【热门文章】
【热门文章】