我有以下数据库,需要一些帮助从当前登录的用户检索名称和地址。
我编写了以下代码,但信息未显示在textview
中public class UserProfileActivity extends AppCompatActivity {
DatabaseReference userReference = FirebaseDatabase.getInstance().getReference();
TextView userName;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_user_profile);
userName = (TextView) findViewById(R.id.userName);
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot ds : dataSnapshot.getChildren()) {
String name = ds.child("name").getValue(String.class);
userName.setText(name);
}
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
};
}
}
答案 0 :(得分:1)
试试这个:
FirebaseUser user=FirebaseAuth.getInstance().getCurrentUser();
String userid=user.getUid();
DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child(userid);
reference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String address=dataSnapshot.child("address").getValue().toString();
String name=dataSnapshot.child("name").getValue().toString();
userName.setText(name);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
由于您的数据快照位于根节点下的直接子节点child(userid)
上,因此您无需迭代即可获取当前用户的值。