【问题标题】:How to read the nested maps from fireStore database from android如何从android的fireStore数据库中读取嵌套地图
【发布时间】:2021-07-25 07:32:18
【问题描述】:

在上图中,我有一张地图,其中包含 2020、2021 等的数组列表。我想在 RecyclerView 中显示数组数据。如何在android中做到这一点?

如果地图包含地图列表,如何检索数据。我能够获取带有字段名称的文档,但在如何获取带有字段名称的地图和该地图中的数据时遇到了困难。

【问题讨论】:

  • 您是否需要显示单个年份(例如 2020 年)或所有年份(2020 年、2021 年等)的 URL?
  • @AlexMamo 所有年份网址

标签: java android firebase google-cloud-firestore


【解决方案1】:

DocumentSnapshot 的getData() 方法,返回Map<String, Object> 类型的对象。由于它是一个 Map,我们可以简单地获取 year,然后遍历相应的 URL,如下面的代码行:

FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
CollectionReference subjectRef = rootRef.collection("subject");
DocumentReference politicalScienceRef = subjectRef.document("political science");
politicalScienceRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
    @Override
    public void onComplete(@NonNull Task<DocumentSnapshot> task) {
        if (task.isSuccessful()) {
            DocumentSnapshot document = task.getResult();
            if (document.exists()) {
                List<String> urls = new ArrayList<>();
                Map<String, Object> data = document.getData();
                Map<String, Object> year = (Map<String, Object>) data.get("year");
                for (Map.Entry<String, Object> entry : year.entrySet()) {
                    List<String> yearUrls = (List<String>) entry.getValue();
                    for (String url : yearUrls) {
                        urls.add(url);
                    }
                }
                for (String url : urls) {
                    Log.d("TAG", url);
                }
            } else {
                Log.d("TAG", "No such document");
            }
        } else {
            Log.d("TAG", "get failed with ", task.getException());
        }
    }
});

最后,只需将urls 列表传递给适配器,并将所有这些 URL 显示到 RecyclerView 中。

【讨论】:

  • 感谢快速响应的人。我会试试这个。
  • 我可以获取数组名称,以便用户知道 URL 属于特定年份吗?
  • 当然,只需使用entry.getKey()
  • 为实现这一目标付出了很多努力。现在它工作得很好。再次感谢...
猜你喜欢
  • 2021-09-30
  • 2022-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-01
  • 1970-01-01
相关资源
最近更新 更多