这是我在Firebase数据库中的JSON数据结构:
familylist
|- 0
|--children
| |-- 0:"FGH"
| |-- 1:"HJU"
|-- code: "2222"
|-- family: "SWE"
|-- fatherName: "ABC"
|-- motherName: "XYZ"
问题是我必须遍历整个循环。因此,每次检查用户输入的代码是否与此code
字段匹配时,我都无法将数据库引用值硬编码为0,1,..等。
例如:
familyListReference = firebaseDatabase.getReference("familylist/0/family");
我可以使用以下代码从特定位置获取单个值。但是,如何更改我的代码以便我可以遍历循环并获得我想要提取的数据。
// Read from Database
familyListReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String familyName = (String) dataSnapshot.getValue();
Log.d(TAG, "Family name is: " + familyName);
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.d(TAG, "Read failed");
}
});
答案 0 :(得分:1)
请使用此代码:
DatabaseReference familyListReference = FirebaseDatabase.getInstance().getReference().child("familylist");
familyListReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String key = (String) ds.getKey();
DatabaseReference keyReference = FirebaseDatabase.getInstance().getReference().child("familylist").child(key);
keyReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String code = dataSnapshot.child("code").getValue(String.class);
String family = dataSnapshot.child("family").getValue(String.class);
String fatherName = dataSnapshot.child("fatherName").getValue(String.class);
String motherName = dataSnapshot.child("motherName").getValue(String.class);
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.d(TAG, "Read failed");
}
});
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.d(TAG, "Read failed");
}
});
希望它有所帮助。