私はこのDBを持っています:
users: {
0 : {
name: xx
age: 11
books:{
0 : true
3 : true
}
}
1 : {
name: yy
age: 12
books:{
1 : true
4 : true
}
}
}
私はdb alsを参照しています:
database = FirebaseDatabase.getInstance();
refdb = database.getReference();
クエリals:
Query = refdb.child("users");
私はすべてのペア(name:value)を取得する必要があり、ユーザーの場合は本のペア(id:true)alsを取得します。
0 : true
3 : true
これを使用してペアを取得しています(id:true):
refdb.child("users").child("books").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
pck.setText(pack);
for (DataSnapshot dttSnapshot2 : dataSnapshot.getChildren()) {
pack = dttSnapshot2 .getKey().toString()+":"+dttSnapshot2 .getValue().toString();
pck.append(pack);
}
...
ここで、pckはtextViewです。私の問題は、彼がtextViewに空の文字列を出力するたびにです。これらのデータを取得してテキストビューに書き込むにはどうすればよいですか?
refdb.child("users").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot uniqueKeySnapshot : dataSnapshot.getChildren()){
//Loop 1 to go through all the child nodes of users
for(DataSnapshot booksSnapshot : uniqueKey.child("Books").getChildren()){
//loop 2 to go through all the child nodes of books node
String bookskey = booksSnapshot.getKey();
String booksValue = booksSnapshot.getValue();
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
}
今のところ、このコードはテストしていませんが、理解していただければ幸いです。データを抽出する一意のIDをfirebaseが認識していないため、一意のIDノードをスキップできません。したがって、foreachループを使用してすべての一意のIDを確認するか、データを取得する一意のIDを指定します。