我有一个Firebase数据库,如下所示:
Entries
的孩子将拥有各种未知名称,每个孩子中的键/值也会有各种未知名称。我希望检索所有子名称和键名,但不确定如何在DataSnapshot
中进行双循环。这是我到目前为止一直在玩的东西:
mDatabase = FirebaseDatabase.getInstance().getReference();
mDatabase.child("Entries").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot entries : dataSnapshot.getChildren()) {
for (Map<String, String> entry : entries.getValue().entrySet()){
Map singlePair = (Map) entry.getValue();
我知道最后两行是乱七八糟但我不确定如何检索孩子们的内容?任何帮助将不胜感激。
答案 0 :(得分:2)
我个人更喜欢坚持DataSnapshot
课程,并给他们更多的语义名称。类似的东西:
mDatabase = FirebaseDatabase.getInstance().getReference();
mDatabase.child("Entries").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot entrySnapshot : dataSnapshot.getChildren()) {
for (DataSnapshot propertySnapshot : entrySnapshot.getChildren()) {
System.out.println(propertySnapshot.getKey()+": "+propertySnapshot.getValue(String.class));
}
}
}
...
答案 1 :(得分:1)
请参阅以下代码。
FirebaseDatabase database = FirebaseDatabase.getInstance();
database.getReference()
.child("Entries")
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot snapshot : dataSnapshot.getChildren()){
System.out.println(snapshot.getKey()); // home wifi, work computer, ...
Map<String, Object> map =(Map<String, Object>) snapshot.getValue();
for (Map.Entry<String, Object> entry : map.entrySet()){
System.out.println(entry.getKey()); // network name
System.out.println(entry.getValue().toString()); // password
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});