Android 如何循环使用firebase数据库中的数据?
这是我在Firebase数据库中的JSON数据结构:Android 如何循环使用firebase数据库中的数据?,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,这是我在Firebase数据库中的JSON数据结构: familylist |- 0 |--children | |-- 0:"FGH" | |-- 1:"HJU" |-- code: "2222" |-- family: "SWE" |-- fatherName: "ABC" |-- motherName: "XYZ" 问题是我必须循环我的整个循环。因此,我无法将数据库引用值硬编码为0,1,。。每次我检查用户输入的代码是否与此
familylist
|- 0
|--children
| |-- 0:"FGH"
| |-- 1:"HJU"
|-- code: "2222"
|-- family: "SWE"
|-- fatherName: "ABC"
|-- motherName: "XYZ"
问题是我必须循环我的整个循环。因此,我无法将数据库引用值硬编码为0,1,。。每次我检查用户输入的代码是否与此代码字段匹配时,都会执行etc。
例如:
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");
}
});
请使用此代码:
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");
}
});
希望有帮助。没用。它只到达这里!家庭列表参考:https://bcm.firebaseio.com/familylist 当我在LogCat中记录输出时。我必须手动写入0,以获取特定0位置的值。有什么方法可以通过编程来实现吗?它也没有进入for循环。不知道为什么!请参阅我更新的代码,其中我假设familylist节点是根节点之后的第一个子节点。对吗?没错。根->家庭列表->0-->所有其他字段。这就是流程。新数据库引用仍然不起作用吗?现在的错误是什么?是的。还是不行!家庭列表参考:https://bcm.firebaseio.com/familylist 这是一个新的参考相同。应该是https://bcm.firebaseio.com/familylist/0 正当我如何通过编程实现这一点?