2017-08-10 151 views
1

我已經創建了一個android應用程序,它以下面的方式存儲User類的值。如何從firebase數據庫中獲取子女總數

{ 
    "users" : { 
    "Om8VuPSCcvg7d5jsYtZvPTWpm5o1" : { 
     "email" : "[email protected]", 
     "name" : "Ajay", 
     "uId" : "Om8VuPSCcvg7d5jsYtZvPTWpm5o1" 
    }, 
    "v1dHuFXkfJYt6fYppICQS6rjxiw2" : { 
     "email" : "[email protected]", 
     "name" : "Tavinder Singh", 
     "uId" : "v1dHuFXkfJYt6fYppICQS6rjxiw2" 
    } 
    } 
} 

我的用戶等級:

@IgnoreExtraProperties 
public class User implements Parcelable { 
    public String uId; 
    public String email; 
    public String name; 

    public User() { 

    } 

    public User(String uId, String email, String name) { 
     this.uId = uId; 
     this.email = email; 
     this.name = name; 
    } 

    protected User(Parcel in) { 
     uId = in.readString(); 
     email = in.readString(); 
     name = in.readString(); 
    } 

    public static final Creator<User> CREATOR = new Creator<User>() { 
     @Override 
     public User createFromParcel(Parcel in) { 
      return new User(in); 
     } 

     @Override 
     public User[] newArray(int size) { 
      return new User[size]; 
     } 
    }; 

    @Override 
    public int describeContents() { 
     return 0; 
    } 

    @Override 
    public void writeToParcel(Parcel parcel, int i) { 
     parcel.writeString(uId); 
     parcel.writeString(email); 
     parcel.writeString(name); 
    } 
} 

我使用下面的代碼保存數據

FirebaseUser user = mAuth.getCurrentUser(); 
DatabaseReference database = FirebaseDatabase.getInstance().getReference(); 
database.child("users").child(user.uId).setValue(user); 

但是,當我試圖算子的總數「用戶「有,我得到的全部是0. 我使用下面的代碼來獲得子女總數:

userReference = FirebaseDatabase.getInstance().getReference().child("users"); 
userReference.addValueEventListener(new ValueEventListener() { 
       @Override 
       public void onDataChange(DataSnapshot dataSnapshot) { 
        num = dataSnapshot.getChildrenCount(); 
       } 

       @Override 
       public void onCancelled(DatabaseError databaseError) { 

       } 
      }); 

我想知道我怎麼能得到孩子的總數。

+0

你能後的dataSnapshot字符串? –

+0

它什麼也沒有顯示。但是當我使用userReference = FirebaseDatabase.getInstance()。getReference()。child(「users」)。child(userDetail.uId);那麼它表明類似{ 「電子郵件」: 「[email protected]」, 「名」: 「阿杰」, 「UID」: 「Om8VuPSCcvg7d5jsYtZvPTWpm5o1」 } –

回答

2

試試這個:

userReference = FirebaseDatabase.getInstance().getReference("users"); 
userReference.addValueEventListener(new ValueEventListener() { 
       @Override 
       public void onDataChange(DataSnapshot dataSnapshot) { 
        num = dataSnapshot.getChildrenCount(); 
       } 

       @Override 
       public void onCancelled(DatabaseError databaseError) { 

       } 
      }); 
+0

由於其工作。 –

+0

接受其他人知道工作:) @TavinderSingh –

+0

等待,當我在方法onDataChange()中打印num的值,然後它給出正確的值,但它外面顯示爲什麼? –