【问题标题】:Firebase JSON: Need to access child, but each child again has more childFirebase JSON:需要访问孩子,但每个孩子又有更多孩子
【发布时间】:2016-08-28 11:54:54
【问题描述】:

Root 有一个子聊天。在 Chat 中,我们保存了不同用户的聊天记录(在本例中,它们是aseed、aseed2 和aseed3。我需要在列表视图中显示用户名(在列表中显示aseed、aseed2 和aseed3)。

这是 JSON

{
 "chat" : {
    "aseed" : {
      "-KQC94Spu5JdJRbjnBh_" : {
        "author" : "JavaUser72599",
        "message" : "ggf"
      },
      "-KQC98gR9vKOyOAtKrS5" : {
        "author" : "JavaUser72599",
        "message" : "dhdh"
      }
    },
    "aseed3" : {
      "-KQCBw_ldkfhVG643eFH" : {
        "author" : "aseed3",
        "message" : "aseed"
      },
      "-KQCBxQJXq8rIqkHvA4r" : {
        "author" : "aseed3",
        "message" : "ok"
      },
      "-KQCC30HjSsHWSot9MNu" : {
        "author" : "aseed3",
        "message" : "hi"
      }
    },
    "aseed2" : {
      "-KQCC0-q6Do67PiFXXcP" : {
        "author" : "aseed2",
        "message" : "ok ok"
      }
    }
  }
}

演示项目 Android Chat 展示了如何读取树叶中的最终数据。

【问题讨论】:

  • 显示您当前的代码。
  • 用示例代码解释你的问题
  • 使用这个 - github.com/firebase/AndroidChat 稍作修改,我创建了这些聊天脚本,其中聊天脚本根据用户名保存在单独的子项中。我现在没有代码来访问名称(如aseed、aseed2、aseed3)以将其显示在列表中。

标签: android firebase firebase-realtime-database


【解决方案1】:

在我看来,您需要访问该特定 DataSnapshot 节点的密钥。您可以做的是,一旦您可以访问aseed、aseed2.. 节点(可能在 for 循环内),您就可以获取每个子节点的密钥并用它扩展 ListView。

DataSnapshot 元素有一个名为 getKey(). 的方法

这是文档。 DataSnapshot getKey() Method

【讨论】:

    【解决方案2】:

    您可以获取 jsonobject,然后获取将返回 JSONArray 的名称。 代码:

    String jsonstr = json;//This is the JSON string
    
    JSONObject jo = new JSONObject(jsonstr);
    JSONObject chat = jo.getJSONObject("chat");
    JSONArray jsonNames = chat.names();
    String[] names = null;
    for(i=0; i < jsonNames.length();i++)
        names[i] = jsonNames.get(i);
    

    现在在任何你想要的地方使用这个名字数组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-12
      • 2018-11-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多