java-如何在不指定父文件夹/ ref的情况下遍历Datasnapshot
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-如何在不指定父文件夹/ ref的情况下遍历Datasnapshot,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2501字,纯文字阅读大概需要4分钟。
内容图文
![java-如何在不指定父文件夹/ ref的情况下遍历Datasnapshot](/upload/InfoBanner/zyjiaocheng/696/06f64448f9aa4f92a34b95903b40711a.jpg)
我想遍历具有以下结构的数据快照:
{
"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所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。