android - 在视图模型中使用 LiveData 的结果从 firebase 获取数据
问题描述
我想从 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 上显示组合结果。
解决方案
我认为本教程中的第 5 步是您问题的答案。一旦 Firebase 中的数据发生更改,您就可以在此处更新 UI。
推荐阅读
- amazon-web-services - 如何使用 AWS Lambda ( Python) 调用步进函数
- ruby-on-rails - 如何对收藏进行排序?
- ios - UIViewController 在模态演示后更改尺寸
- android - 我需要学习什么来编写像 Snapchat 这样的应用程序?
- simulink - 使用 simulink 的串行接收块从 PC 的 COM 端口读取给出错误值的任何解决方案?
- google-apps-script - 如何将 Team Drive Apps 脚本与 GCP 项目相关联?
- javascript - 如何在完整日历中隐藏事件标题
- arrays - 在 Swift 中存储不同类的对象的数组
- angular-universal - 如何解决 Angular 通用项目中的 webpack 问题?
- ios - 如何将从一个类中选择的 RadioButton 的值发送到另一个类