1

我正在尝试RecylerView在单个文档中使用附加的图像数据结构填充 Android 中的一个。我想列出每个 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
4

1 回答 1

0

如果 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
            }
        }
    }
});

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

仍然建议更改架构

希望这会有所帮助!

于 2020-01-09T04:24:30.343 回答