[英]How can i get Multiple values of multiple nodes using Datasnapshot from the Firebase Database?
我想顯示所有日期的dayVisitors。 因此,我想訪問Noida Sec1 /所有日期下的所有dayVisitors。 數據庫結構 這是我所做的,但是它給出了空指針錯誤:嘗試在空對象引用上調用虛擬方法'java.lang.String com.example.thehighbrow.visitormanagement.DayVisitor.getName()'。
如果您只想專門訪問Noida Sec 1下的dayVisitors,則可以使用以下方法簡單地實現此目的:
final FirebaseDatabase db = FirebaseDatabase.getInstance();
DatabaseReference ref = db.getReference("Noida Sec1");
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot childSnapshot : dataSnapshot.getChildren()) {
if(childSnapshot.hasChild("dayVisitor")) {
for (DataSnapshot visitorSnapshot : childSnapshot.child("dayVisitor").getChildren()) {
Visitor visitorObject = visitorSnapshot.getValue(Visitor.class); //or whatever your dayVisitor object is
//now you can access visitorObject with the fields you created and do whatever like add it to an arraylist
}
}
}
} @Override
public void onCancelled(DatabaseError databaseError) {
Log.e("READ FAILED", databaseError.getMessage());
}
});
我不確定您的代碼在做什么,但是,我建議,如果可能的話,請嘗試將數據庫布局設置為盡可能平坦的格式,因為以這種方式嵌套數據會變得非常混亂和效率低下。 也許將dayVisitor設為訪問者中的字段,而不是其自己的子節點。
首先獲得對Noida Sec 1的孩子的引用,例如:
DatabaseReference mNoidaReference = mFirebaseDatabase.getReference().child("Noida Sec1");
現在為其創建一個childEventListener並循環遍歷以查找dayVisitor子級
ChildEventListener mChildEventListener = new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
for(Datasnapshot data: dataSnapshot.child("dayVisitor")){
String dayVisitor = data.getValue();
}
}
@Override
public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
}
@Override
public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
};
mNoidaReference.addChildEventListener(mChildEventListener);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.