我的数据设置如下:
- 用户集合包含用户文档。
- 用户文档包含一个 Friends 子集合。
- Friends 子集合包含 UserRef 文档。
- UserRef 文档包含对用户文档的 DocumentReference。
我想使用 FirestoreRecyclerAdapter 在 RecyclerView 中显示特定用户的所有朋友。从这个答案来看,我似乎无法检索查询中 DocumentReference 指向的用户文档。因此,以下代码是我尝试使用 SnapshotParser 来实现的。但是,我不知道如何从 parseSnapshot() 返回 User,因为它是异步检索的。
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();
您将无法执行此操作,因为 parseSnapshot 需要同步发生,但获取另一个文档是异步的。在 parseSnapshot 返回之前,文档获取不会通过回调完成。因此,您将无法为此使用 Firebase UI - 您必须想出自己的方式来发出多个请求来填充 RecyclerView,这可能需要大量工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句