用户登录后,Firebase会检索信息

时间:2018-04-02 15:35:50

标签: android firebase firebase-realtime-database

我有以下数据库,需要一些帮助从当前登录的用户检索名称和地址。 enter image description here

我编写了以下代码,但信息未显示在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) {

            }
        };
    }
}

这是实现ValueEventListener时当前正在发生的事情 enter image description here

1 个答案:

答案 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)上,因此您无需迭代即可获取当前用户的值。