Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用viewmodel中的LiveData结果从firebase获取数据_Android_Firebase_Android Recyclerview_Android Architecture Components_Android Livedata - Fatal编程技术网

Android 使用viewmodel中的LiveData结果从firebase获取数据

Android 使用viewmodel中的LiveData结果从firebase获取数据,android,firebase,android-recyclerview,android-architecture-components,android-livedata,Android,Firebase,Android Recyclerview,Android Architecture Components,Android Livedata,我想从firebase中获取2个对象,并使用viewmodel在Recyclerview上显示合并结果。我已经创建了一个viewmodel,它从firebase中获取一个对象,并基于该对象的id获取另一个对象并更新ui。 视图模型类的一些代码 private static final DatabaseReference POST_REF = FirebaseDatabase.getInstance().getReference("/Post"); private final

我想从firebase中获取2个对象,并使用viewmodel在Recyclerview上显示合并结果。我已经创建了一个viewmodel,它从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;

}
如何使用first的结果从firebase获取第二个对象并将其通知livedata

第一个对象是用户的post,第二个对象是userinfo。我想在Ui上显示合并结果

数据库结构我想获取post,基于post中的ID我想获取userdetails 我认为第五步就是你问题的答案。
在这里,您可以在firebase中的数据更改后更新UI。

添加完整的代码、数据库结构和模型类@RohanSharma@Raj我已经编辑了这个问题,你后来解决了吗?我不这么认为,他们没有使用livedata或VieModels来使用viewmodels和livedata更新UI,你必须使用android的room persistent library。我想从post和用户模型中获得结果,并用它更新livedata对象。这是我最关心的问题,怎么做?
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);
}