首页 > 解决方案 > 在视图模型中使用 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 上显示组合结果。

数据库结构我想获取帖子并基于帖子中的 id 我想获取用户详细信息 在此处输入图像描述

标签: androidfirebaseandroid-recyclerviewandroid-architecture-componentsandroid-livedata

解决方案


我认为本教程中的第 5 步是您问题的答案。一旦 Firebase 中的数据发生更改,您就可以在此处更新 UI。


推荐阅读