在视图模型中使用 LiveData 的结果从 firebase 获取数据
Posted
技术标签:
【中文标题】在视图模型中使用 LiveData 的结果从 firebase 获取数据【英文标题】:Get data from firebase with Result of LiveData in viewmodel 【发布时间】:2018-12-30 07:26:59 【问题描述】:我想从 firebase 获取 2 个对象,并且我想使用 viewmodel 在 Recyclerview 上显示组合结果。我创建了一个视图模型,它从 firebase 获取一个对象,并基于该对象的 id 我想获取另一个对象并更新 ui。 一些视图模型类的代码
private static final DatabaseReference POST_REF =
FirebaseDatabase.getInstance().getReference("/Post");
private final FirebaseQueryLiveData liveData = new
FirebaseQueryLiveData(POST_REF);
@NonNull
public LiveData<DataSnapshot> getDataSnapshotLiveData()
return liveData;
FirebaseQueryLiveData 类
private final MyValueEventListener listener = new MyValueEventListener();
public FirebaseQueryLiveData(DatabaseReference ref)
this.query = ref;
@Override
protected void onActive()
Log.d(LOG_TAG, "onActive");
query.addValueEventListener(listener);
@Override
protected void onInactive()
Log.d(LOG_TAG, "onInactive");
query.removeEventListener(listener);
如何使用 first 的结果从 firebase 获取第二个对象并通知 livedata
第一个对象是用户的帖子,第二个对象是 userinfo 。我想在 Ui 上显示组合结果。
我想获取帖子的数据库结构并基于帖子中的 id 我想获取用户详细信息
【问题讨论】:
添加完整代码、数据库结构和模型类@RohanSharma @Raj 我已经编辑了问题 你后来解决了吗?? 【参考方案1】:我认为this tutorial 中的第 5 步是您问题的答案。 一旦 Firebase 中的数据发生更改,您就可以在此处更新 UI。
【讨论】:
我不认为他们没有使用 livedata 或 viemodels 要使用视图模型和实时数据更新 UI,您必须使用 android 的房间持久库。 codelabs.developers.google.com/codelabs/… 我想从帖子和用户模型中获取结果,并用它更新 livedata 对象。这是我主要关心的怎么做?以上是关于在视图模型中使用 LiveData 的结果从 firebase 获取数据的主要内容,如果未能解决你的问题,请参考以下文章
在 Android 视图模型中的内部网络更改回调时 LiveData 未触发 - Kotlin
如何在MVVM架构中观察RecyclerView适配器中的LiveData?