2017-09-27 40 views
0

我想從另一個ValueEventListener中的另一個DatabaseReference中獲取值。從下面的代碼中,有一個錯誤說「無法解析方法」getValue()。「Firebase Android-如何從ValueEventListener中的另一個DatabaseReference獲取值?

我可以再拍監聽器mDatabaseUsers,但我需要在mDatabaseEvents每個孩子得到的價值。

可以真正使用的幫助,謝謝!

mDatabaseEvents.addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
      for (DataSnapshot dsp : dataSnapshot.getChildren()) 
        String userKey = dsp.getKey(); 
        Log.d("TAG", userKey); 
        mDatabaseUsers.child(userKey).getValue(); 

       } 

    @Override 
    public void onCancelled(DatabaseError databaseError) { 
    } 
}); 

回答

0

你需要從數據該dataSnapshot對象不是從mDatabaseUsers對象沒有getValue()DatabaseReference

您需要使用:。

dsp.child(userKey).getValue(String.class); 

如果你的值是一個字符串。

0

您可以使用子偵聽器偵聽根節點下的每個更改。

DatabaseReference reference = FirebaseDatabase 
      .getInstance() 
      .getReference(root_path_that_has_childs); 

    reference.addChildEventListener(new ChildEventListener() { 
     @Override 
     public void onChildAdded(DataSnapshot dataSnapshot, String previousChildName) { 
      switch (dataSnapshot.getKey()) { 
       case "key_1": 
        break; 
       case "key_2": 
        break; 
      } 
     } 

     @Override 
     public void onChildChanged(DataSnapshot dataSnapshot, String previousChildName) { 

     } 

     @Override 
     public void onChildRemoved(DataSnapshot dataSnapshot) { 

     } 

     @Override 
     public void onChildMoved(DataSnapshot dataSnapshot, String previousChildName) { 

     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 

好運

埃姆雷

0

我認爲mDatabaseUsers是參考DB?如果沒有,就引用之前:

DatabaseReference <your reference> = <your DB>.getReference(); 

你在這裏做的,什麼是真正試圖改變引用(添加子)從監聽器裏:

mDatabaseUsers.child(userKey).getValue();

這是不正確的,因爲你設置監聽器到特定的數據庫引用。所以在設置聽衆之前添加孩子,如下所示:

mDatabaseEvents.child(userKey).addValueEventListener(new ValueEventListener() {... 
0

使用此值分別獲取每個孩子的值。

dataSnapshot.child(userKey).getValue(); 

不需要全參考。這就是爲什麼你得到錯誤

相關問題