【发布时间】:2017-02-19 11:40:40
【问题描述】:
我想遍历具有以下结构的数据快照;
{
"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();
我不确定如何在不知道父 ref 的情况下查看此快照的每个条目并检索条目信息。 (fw88v6xu6wybamg9zzt6)?
好吧,我得到了post
感谢 Chris,让我在正确的路径上搜索它,但仍然无法构建正确的语法来达到我想要做的事情。
目前我的方法如下;
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());
【问题讨论】:
标签: java android firebase firebase-realtime-database