如何跨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更新它的数据呢?

阅读 5.5k
7 个回答

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

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

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

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

新手上路,请多包涵

首先

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了

EventBus,Otto值得你拥有

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题