我正在尝试从以下集合“ Buses”中获取数据,如果说出 Bus_Driver ==“ xyz” 。
我的Firebase测试如下:
我正在使用以下代码获取数据库引用:
busInfoReference= FirebaseDatabase.getInstance().getReference("Buses");
我应用的以下循环无法正常工作:
for(DataSnapshot ds : dataSnapshot.getChildren()){
busInfo = ds.getValue(BusInforamtion.class);
if(ds.exists()) {
if(busInfo.getBus_Driver().equalsIgnoreCase(driverName))
{
saveData()
break;
//}
}
}
如何应用循环以获取所需数据?预先感谢。
答案 0 :(得分:1)
要解决此问题,您需要像这样查询数据库:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
Query query = rootRef.child("Buses").orderByChild("Bus_Driver").equalsTo("xyz");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String Bus_Driver = ds.child("Bus_Driver").getValue(String.class);
Log.d(TAG, Bus_Driver);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d(TAG, databaseError.getMessage());
}
};
query.addListenerForSingleValueEvent(valueEventListener);
logcat中的输出将包含所有总线驱动程序名称。