Firestore:查询DocumentReference的数组以填充Recyclerview

时间:2017-11-23 05:41:00

标签: android firebase android-recyclerview google-cloud-firestore

我的数据库的结构使得我有一个用户集合,其中包含 user 文档,每个文档都有一个DocumentReferences数组的字段。与用户集合处于同一级别的集合。

我需要检索此数据并在完成查询后填充RecyclerView。目前,我的困境是我需要迭代每个DocumentReference并且只在最终onSuccessListener执行时初始化我的RecyclerView。在Firestore中有可靠的方法吗?

2 个答案:

答案 0 :(得分:0)

您仍然可以在RecyclerView之前初始化onSuccessListener,并在添加notifyDataSetChanged()

后致电item
  

要从Collection填充数据,我们可以使用for each循环来遍历Documents

CollectionReference ref = FirebaseFirestore.getInstance().collection(USERS);


ref.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                @Override
                public void onComplete(@NonNull Task<QuerySnapshot>task){
                         if (task.isSuccessful()) {
                         for(DocumentSnapshot document : task.getResult()){
                          //query here
                          item.add(document);
                          adapter.notifyDataSetChanged();
                         }
                         } else {
                         //fail getMessage
                         }
                }
            });

答案 1 :(得分:0)

从今天(2018-08-13)开始,根据有关array membership的更新文档,现在可以使用whereArrayContains()方法基于数​​组值过滤数据。在您的情况下,您应该使用:

CollectionReference usersRef = db.collection("users");
usersRef.whereArrayContains("DocumentReferences", SpecificDocumentReferences);
  

此查询返回每个用户文档,其中DocumentReferences字段是包含特定文档参考的数组。如果该数组具有要查询的值的多个实例,则该文档仅包含在结果中一次。