Firebase UI 回收器适配器中的不同子集合

Different subcollections in a Firebase UI recycler adapter

我正在尝试使用 Firebase-UI 获取不同的子集合并使它们适应我的 RecyclerAdapter

我的 Cloud Firestore 是这样设置的:

user:(Collection)
    uid1:(Document)
       name, email(fields)

data:(Collection)
    uid1:(Document)
       images:(Collection)
          document1
                   fields
       pdf:(Collection)
          document1
                  fields

所以我在想,我不知道如何查询具有相同模型的不同集合并将它们适配到回收器适配器中。

我的实际代码可以检索图像:

private void setupImages(){
    Query query = fStore.collection("data").document(userID).collection("images"); //get images collection

    FirestoreRecyclerOptions<Data> options = new FirestoreRecyclerOptions.Builder<Data>().setQuery(query,Data.class).build(); 

    FirestoreRecyclerAdapter adapter = new ImageAdapter(options, getContext());

    recyclerView.setLayoutManager(new GridLayoutManager(getContext(), 2));

    recyclerView.setAdapter(adapter); //adapt the query to adapter
}

并且 class 使用数据模型将数据绑定到视图。

我想过创建一个列表并添加项目,但我认为这不是一个好方法,应该有其他选择。

问:如何将不同的集合绑定到recycler adapter而不被替换?

PS:欢迎以任何方式发表评论以改进我的数据库。我是新来的!

根据回答:

Yes, that's it!

对于这个问题:

So you want to get the data from data/userID/images and data/userID/pdfs in a single query?

答案是,你不能。您无法在单个查询中从两个不同的集合中获取数据,即使两个集合中的对象相同。 Firestore 中的查询很浅,这意味着您只能从查询 运行 所针对的集合中获取文档。如果您需要从两个集合中获取文档,则需要创建两个单独的查询。在 Android 中,您可以在任务 whenAllSuccess() 方法的帮助下实现这一点,正如我在以下 post:

的回答中所解释的

但是,有一种解决方案可以从多个集合中获取数据,但所有 collections/sub-collections 都应该具有相同的名称。为此,请参阅有关使用 Firestore collection group queries.

的官方文档