【发布时间】:2020-02-13 20:02:05
【问题描述】:
我如何知道不同集合的多个SnapshotListener 已在哪里完成?
举个例子,尝试从用户集合中检索用户,从团队集合中检索团队,从教练集合中检索教练。
我想让活动“活跃”只有当我得到我正在寻找的所有数据时。
例如:
firebaseFirestore.collectionGroup("users").whereEqualTo("user_id", currentUser.getId()).addSnapshotListener(this, new EventListener<QuerySnapshot>() {
@Override
public void onEvent(@Nullable QuerySnapshot queryDocumentSnapshots, @Nullable FirebaseFirestoreException e) {
// getting the user
}
firebaseFirestore.collectionGroup("teams").whereEqualTo("team_id", currentTeam.getId()).addSnapshotListener(this, new EventListener<QuerySnapshot>() {
@Override
public void onEvent(@Nullable QuerySnapshot queryDocumentSnapshots, @Nullable FirebaseFirestoreException e) {
// getting the team
}
firebaseFirestore.collectionGroup("coachs").whereEqualTo("coach_id", currentCoach.getId()).addSnapshotListener(this, new EventListener<QuerySnapshot>() {
@Override
public void onEvent(@Nullable QuerySnapshot queryDocumentSnapshots, @Nullable FirebaseFirestoreException e) {
// getting the coach
}
我如何确保只有当我得到所有三个时我才会使我的活动“启用”?
【问题讨论】:
-
我可以在我的视图模型中创建一个三个布尔值来表示数据是否为每个快照准备好,并且在每个完整的侦听器上更新值并调用一个同步的方法来查找三个布尔值,如果都是真的,更新活动。但是有没有更“优雅”的方式来做到这一点?
标签: java android firebase google-cloud-firestore