データスナップショットを次のような構造で繰り返したいと思います。親フォルダ/参照を指定せずにDatasnapshotを反復処理する方法
{
"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
}
}
}
具体的に何を私がやっていることは、データ/イメージの子供のスナップショットを取得しているので、それは自動で3つのエントリになりますが、このようなfw88v6xu6wybamg9zzt6
などの参照を生成したので、私はアドレスを取得するために、特定のエントリにアクセスすることはできません著者の例については、私は私のアプリが
Iterable<DataSnapshot> imagesDir = snapshot.getChildren();
を取得し、私はこのスナップショットの各エントリの上に移動して、親REFを知らなくても、エントリの情報を取得する方法がわからないですしました。 (
fw88v6xu6wybamg9zzt6
)?
は、すべての権利だけでなく、私はまだ私が何をしようとしています何を達するために右の構文を構築することができないことを検索するための正しい道に私を送るために、クリスにpost
Thankxになったが、 。
私の方法は以下の通りです。最初のログから
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());
Iは、各ノードのすべての値の文字列を取得し、2つ目に、私はすべてのノードを含むようにアレイを構築しました。
私がしようとしているのは、特定のノード(アドレス値など)をonDataChange
メソッドの外で宣言したArrayListに追加することです。子ノードを反復するたびに発生します。ですから、forループの終わりまでに、この場合、私はarraylistに3つのアドレス(値のみ)を持ちます。
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());
あなたの助けをありがとう、私は今、私は小さな問題に直面していると言う必要がありますが、私は最初に何を使用したよりも混乱しないforループで行ったようにimagesSnapshotとしてDatasnapshotを宣言しなければならない"子供"しかしそれがどのように動作するか理解した。 – JanusJanus