我一直试图从这里只检索子数据,但是当我调试它时,每个对象显示为null,我不知道为什么,请帮忙。 我已经在堆栈溢出时遵循了一些说明,但我似乎无法获得解决方案。
我在firebase上的数据如下所示:
这是我的代码:
FirebaseAuth mFirebaseAuth = FirebaseAuth.getInstance();
FirebaseUser mFirebaseUser = mFirebaseAuth.getCurrentUser();
DatabaseReference dbRef = FirebaseDatabase.getInstance().getReference().child("the-root-db");
DatabaseReference mFirebaseDbReferenceCurrentUser = dbRef.child(mFirebaseUser.getUid());
DatabaseReference userSettingTable = mFirebaseDbReferenceCurrentUser.child("UserSetting");
userSettingTable.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot userSettingFromDb : dataSnapshot.getChildren()) {
mDbPrice = (String) userSettingFromDb.child("currencyPrice").getValue();
mDbCurrencyId = (String) userSettingFromDb.child("currencyId").getValue();
mDbUserTrackPrice = (String) userSettingFromDb.child("userSettingCurrencyValue").getValue();
break;
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.d("Query Db", databaseError.toString());
}
});
答案 0 :(得分:0)
由于您将ValueListener
附加到特定节点,因此您只会获得一个DataSnapshot
个节点。这意味着你不需要循环其子女。
userSettingTable.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
mDbPrice = dataSnapshot.child("currencyPrice").getValue(String.class);
mDbCurrencyId = dataSnapshot.child("currencyId").getValue(String.class);
mDbUserTrackPrice = dataSnapshot.child("userSettingCurrencyValue").getValue(String.class);
}