java-如何在不指定父文件夹 ref的情况下遍历Datasnapshot

java-如何在不指定父文件夹 ref的情况下遍历Datasnapshot,第1张

概述我想遍历具有以下结构的数据快照:{"data":{"images":{"fw88v6xu6wybamg9zzt6":{"0550e909-3b30-4f83-9725-02fbe45b74ce":3,"address":"http://xxxxxxxxxxxxxxx.jpg","author":&q

我想遍历具有以下结构的数据快照:

 {"data" : {"images" : {  "fw88v6xu6wybamg9zzt6" : {    "0550e909-3b30-4f83-9725-02fbe45b74ce" : 3,    "address" : "http://xxxxxxxxxxxxxxx.jpg",    "author" : "username1",    "author_ID" : "0550e909-3b30-4f83-9725-02fbe45b74ce",    "location" : "0",    "rating" : 3  },  "osgm6v7kfcjwogo5uv21" : {    "0550e909-3b30-4f83-9725-02fbe45b74ce" : 4,    "address" : "xxxxxxxxxxxxxxxx.jpg",    "author" : "username1",    "author_ID" : "0550e909-3b30-4f83-9725-02fbe45b74ce",    "location" : "0",    "rating" : 4  },  "prhpcbrrru7z8x6xtolq" : {    "0550e909-3b30-4f83-9725-02fbe45b74ce" : 6,    "address" : "xxxxxxxxxxxxxx.jpg",    "author" : "username2",    "author_ID" : "0550e909-3b30-4f83-9725-02fbe45b74ce",    "location" : 0,    "rating" : 6  }},"locations" : {  "location1" : {    "author" : "0550e909-3b30-4f83-9725-02fbe45b74ce",    "latitude" : 11.42222573,    "longitude" : 58.4348011  },  "location2" : {    "author" : "0550e909-3b30-4f83-9725-02fbe45b74ce",    "latitude" : 11.42222573,    "longitude" : 38.4333311  } }}

具体来说,我正在获取数据/图像子级的快照,因此它将是具有自动生成的引用(例如fw88v6xu6wybamg9zzt6)的三个条目
因此,我无法访问特定条目来检索作者的地址,因此我使我的应用

    Iterable<DataSnapshot> imagesDir = snapshot.getChildren();

并且我不确定如何遍历此快照的每个条目并在不知道父引用的情况下检索条目的信息. (fw88v6xu6wybamg9zzt6)吗?

好吧,我到了post

感谢克里斯,感谢他向我发送了正确的搜索路径,但仍然无法构造正确的语法来实现我的目标.

现在,我的方法如下:

  public voID onDataChange(DataSnapshot snapshot) {            for (DataSnapshot child: snapshot.getChildren()) {                Log.i("mytag", child.getValue().toString());                imagesDir.add(String.valueOf(child.getValue()));            }            Log.i("mytag", imagesDir.toString());

从第一个日志中,我得到每个节点的所有值的字符串,在第二个日志中,我构造了一个包含所有节点的数组.

我想做的是每次在子对象上迭代时,将一个特定的节点(例如地址值)添加到我在onDataChange方法外部声明的ArrayList中.因此,在for循环结束时,在这种情况下,我将在arrayList中只有三个地址(只有值).

为了做到这一点,构造for循环的正确方法是什么?

好吧,我到达并给出正确结果的最终代码如下:

              public voID onDataChange(DataSnapshot snapshot) {            for (DataSnapshot child: snapshot.getChildren()) {                Log.i("mytag", child.getValue().toString());                imagesDir.add(child.child("author").getValue(String.class));            }            Log.i("mytag_imagesDirFinal", imagesDir.toString());

解决方法:

假设您将ValueEventListener附加到图像:

public voID onDataChange(DataSnapshot imagesSnapshot) {    for (DataSnapshot imageSnapshot: imagesSnapshot.getChildren()) {        imagesDir.add(imageSnapshot.child("address").getValue(String.class));    }    Log.i("mytag", imagesDir.toString());}
总结

以上是内存溢出为你收集整理的java-如何在不指定文件夹/ ref的情况下遍历Datasnapshot全部内容,希望文章能够帮你解决java-如何在不指定父文件夹/ ref的情况下遍历Datasnapshot所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1095926.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存