我正在尝试在单个文档中使用附加的图像数据结构填充Android中的RecylerView。我想列出每个ID的每个名称,地区,图像。

必须做到这一点,不要破坏子集合。是否有任何可能的聪明方法来填充RecylerView。谢谢

这是我正在使用的示例数据。
[![在此处输入图片描述] [1]] [1]

编辑1:
我尝试实现以下功能,是否有效?

private void setUpRecyclerView(View view) {

        CheckinList = new ArrayList<>();
        notebookRef.get()
                .addOnSuccessListener(new OnSuccessListener<QuerySnapshot>(){

            @Override
            public void onSuccess(QuerySnapshot queryDocumentSnapshots) {

                for (QueryDocumentSnapshot documentSnapshot : queryDocumentSnapshots) {
                    user user = documentSnapshot.toObject(user.class);

                    HashMap<String, HashMap> about = user.getAbout();
                    for(Map.Entry<String, HashMap> entry : about.entrySet()) {
                        String key = entry.getKey();
                        HashMap<String, HashMap> value = entry.getValue();
                        String Name = "";
                        String District = "";
                        String imageUrl = "";
                        for (Map.Entry<String, HashMap> entry3 : value.entrySet()) {
                            String key3 = entry3.getKey();
                            if (key3 == "name"){
                                Name = entry3.getValue().toString();
                            } else if (key3 == "district"){
                                District = entry3.getValue().toString();
                            } else if (key3 == "imageurl") {
                                imageUrl = entry3.getValue().toString();
                            }
                        }
                        CheckinList.add(new Checkin(Name, District, imageUrl));

                        }

                    }

                }

        });

        adapter = new NoteAdapter(CheckinList, mContext);

        RecyclerView recyclerView = view.findViewById(R.id.recycler_view);
        recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager(new LinearLayoutManager(mContext));
        recyclerView.setAdapter(adapter);
    }```

full data scheme screenshot
[![enter image description here][2]][2]


  [1]: https://i.stack.imgur.com/2Jspj.jpg
  [2]: https://i.stack.imgur.com/iwsat.jpg

最佳答案

如果ID的数量不多,则需要使用嵌套的for循环。

如果您有权访问数据库,则应将架构更改为如下所示

Document(randomID) -> Collection (about) -> Document (IDs) = Data (name/district/image);


之后,您只需进行嵌套的Firebase查询即可访问数据。

如果您需要有关给定架构的Firebase查询的帮助,或者您想使用自己的架构并获取数据,请提供更多信息。

编辑1

不建议使用,因为这不是获取数据的最佳方法

FirebaseFirestore firebaseFirestore = FirebaseFirestore.getInstance();

firebaseFirestore
    .collection("your collection")
    .document("your doc).get()
    .addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
    @Override
    public void onComplete(@NonNull Task<DocumentSnapshot> task) {
        if (task.isSuccessful()){
            int docSize = 10; //size of IDs (assuming 10)
            for (int index = 0; index <= docSize; index++){
                HashMap<String, Object> dataMap = (HashMap<String, Object>) task.getResult().get("1000000"+index);
                //you have data in dataMap
            }
        }
    }
});



抱歉,不确定结果,因为我没有完整的信息,您需要修改代码。如果成功,请编辑我的答案。

仍建议更改架构

希望这会有所帮助!

10-08 00:47