首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使用相同的数据异步更新所有片段?

如何使用相同的数据异步更新所有片段?
EN

Stack Overflow用户
提问于 2018-03-20 06:19:25
回答 1查看 389关注 0票数 2

这就是我想做的。

我有两个在MainActivity中托管的片段。

片段1只有几个小部件需要更新。碎片2有一个回收视图,以显示物品的清单。

我首先获得数据类的一个实例并调用它的fetchData方法。

fetchData()方法与本地数据库通信,首先查看我的数据是否已经存储在本地数据库中。

如果它被存储,那么它只返回数据,片段2中的回收者视图只显示该数据。

但是,如果本地数据库中的数据尚未出现,则需要从internet上获取新数据时,就会出现问题,这是一个异步调用。(我用来调用web的库是Volly)

现在,我很困惑如何告诉片段1和片段2在数据库更新后使用更新的数据?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-20 10:37:32

架构组件提供了一种方便的方法来连接活动和内部的片段。

  1. 创建一个ViewModel,它将承载数据类实例。https://developer.android.com/topic/libraries/architecture/viewmodel.html#implement
  2. 在两个片段中获取视图模型引用。 最终ViewModelProviders.of(getActivity()).get(MyModel.class);MyModel viewModel =
  3. 使ViewModel将数据类的结果公开为LiveData。https://developer.android.com/topic/libraries/architecture/livedata.html 私有MutableLiveData mCurrentData;公共MutableLiveData getCurrentData() { if (mCurrentName == null) { mCurrentData =新的MutableLiveData();}返回mCurrentData;} public getCurrentData(){mCurrentName}
  4. 订阅在您的两个片段中提供的实时数据。 //获取ViewModel。ViewModelProviders.of(getActivity()).get(MyModel.class);= mModel //创建更新UI的观察者。Final观察者myObserver =新的观察者(){@覆盖公共无效onChanged(@Nullable final String newData) { //使用新的数据} };//观察LiveData,以LifecycleOwner和观察者的身份传递此活动。MModel.getCurrentData().observe(此,myObserver);

使用这种方法,您的两个片段将在myObserver实例中从ViewModel中获得相同的更新。

这里您可以找到更详细的指南。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49377476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档