我的数据设置如下:
-用户集合包含用户文档。
-用户文档包含“朋友”子集合。
-朋友子集合包含UserRef文档。
-UserRef文档包含对User文档的DocumentReference。
我想使用FirestoreRecyclerAdapter在RecyclerView中显示特定用户的所有朋友。从this answer看来,我无法在查询中检索由DocumentReference指向的用户文档。因此,以下代码是我尝试使用SnapshotParser这样做的尝试。但是,我不知道如何从parseSnapshot()返回用户,因为它是异步检索的。
Query query = friendsSubcollection;
FirestoreRecyclerOptions<User> options = new FirestoreRecyclerOptions.Builder<User>()
.setQuery(query, User.class, new SnapshotParser<User>() {
@NonNull
@Override
public User parseSnapshot(@NonNull DocumentSnapshot snapshot) {
DocumentReference userRef = snapshot.toObject(DocumentReference.class);
userRef.get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
@Override
public void onSuccess(DocumentSnapshot documentSnapshot) {
User user = documentSnapshot.toObject(User.class); // How do I return this user from parseSnapshot()?
}
});
}
})
.build();
答案 0 :(得分:0)
您将无法执行此操作,因为parseSnapshot需要同步进行,但是获取另一个文档是异步的。直到parseSnapshot返回之后,文档的get才会完成回调。因此,您将无法为此使用Firebase UI-您将不得不想出自己的方式来生成多个请求以填充RecyclerView,这可能需要大量工作。