Sim*_*mon 5 android firebase firebase-realtime-database getvalue
在我的应用程序中,我使用了 Firebase 数据库并将用户 ID 存储在一个孩子中,并将孩子的值设置为用户名以获取当前用户的用户名。现在我使用 addValueEventListener 从数据库中获取用户名。这是我的 Firebase 结构。
代码如下。
checkUsername.child("check").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
currentUser = dataSnapshot.child(getUserID()).getValue(String.class);
Log.d(TAG, "onDataChange: currentUser = " + currentUser);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
Run Code Online (Sandbox Code Playgroud)
调试时,String currentUser返回空值。
由于您已在节点处添加了 valueEventListener check,因此再次获取子节点没有任何意义(因为用户 ID 是check节点的键,而不是单独的子节点)。
相反,请尝试直接调用dataSnapshot.getChildren();以获取更新数据的整个列表,并迭代它以获取您需要的任何键值。
像这样的事情,
checkUsername.child("check").addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String prevChildKey) {
String current value = dataSnapshot.getValue(String.class);
Log.d("TAG", "onDataChange: " + current value);
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String prevChildKey) {}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String prevChildKey) {}
@Override
public void onCancelled(DatabaseError databaseError) {}
});
Run Code Online (Sandbox Code Playgroud)
此特定用例中的另一个选项是添加 ChildEventListener 并获取onChildAdded()方法内的值。
| 归档时间: |
|
| 查看次数: |
5635 次 |
| 最近记录: |