(问题记录)同时更新ViewPager中多个Fragment的RecycleView中的Item

1、问题

    一个界面利用TabLayout和ViewPager实现,其中有3个Tab,如下图:

每个界面的展现都是一样的功能,但是有些数据是共同的(有可能是三个Tab都有这条数据,有可能有两个Tab有这条数据),现在需求是想要编辑或删除其中一个Tab中的一条数据,如果其他Tab有这条数据也更新或删除;

2、说明

如果只更新当前修改的Tab中的数据能简单搞定,但是需要修改多个Tab中的这条数据,暂时想到每次的成功回调后执行一次ViewPager的Adapter中的notifyDataSetChanged方法,这样虽然实现了,但是体验超级不好。于是我又想另寻出路,但是发现每个Tab中的这条数据的Position也是不一样的,而且这里的ViewPager是实现懒加载的方式,只有界面第一次显示给用户和手动请求才请求数据,然后做缓存,接着就卡在这里了。

3、解决方法

利用RxBus(EventBus也一样),在需要的时候注册事件,然后操作完成,post指定的事件。如下图,分别注册注册和修改事件


其中getPosByInfo() 方法是遍历当前列表所有数据,找到放回位置,否则返回-1,,如果返回值大于等于0说明存在,再进行更新列表。


我这里是根据唯一标识id来判断是否存在;


mPos是记录操作的位置,这是删除成功回调函数,删除成功post事件。

注:3个Fragment都需要注册监听

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容