2017-09-27 45 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(); 

不需要全参考。这就是为什么你得到错误

相关问题