简体   繁体   中英

Android Studio how to get the name's user logged from the Firebase database?

I have this code, how can i only get the name value which is logged?I only need to get the name's user logged, thx!

 DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
    DatabaseReference usuariosRef = rootRef.child("Usuarios");
    ValueEventListener eventListener = new ValueEventListener() {
        @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String name = ds.child("name").getValue(String.class);
            Log.d("TAG", name);
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
usuariosRef.addListenerForSingleValueEvent(eventListener);

this gets all names and i only want to get the name's user logged.

It is retrieving all of the names because you are iterating through all of the users. To just get the current user's name, just use the uid of the user. To get the uid of the current user, do this:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();

Then you can use this uid to get the current user only.

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference usuariosRef = rootRef.child("Usuarios");
DatabaseReference current_userRef = usuariosRef.child(uid);
ValueEventListener eventListener = new ValueEventListener() {
    @Override
public void onDataChange(DataSnapshot dataSnapshot) {

        String name = datasnapshot.child("name").getValue(String.class);
        Log.d("TAG", name);

}

@Override
public void onCancelled(DatabaseError databaseError) {}
};
current_UserRef.addListenerForSingleValueEvent(eventListener);

Hope this helps!

To display all the users within your database, please use the following code:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference usuariosRef = rootRef.child("Usuarios");
ValueEventListener eventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String name = ds.child("name").getValue(String.class);
            Log.d("TAG", name);
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
usuariosRef.addListenerForSingleValueEvent(eventListener);

The output will be all the names of your logged in users:

Eric
Julian Ramos
//and so on

To get the details only of a single user, please use the following code:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = rootRef.child("Usuarios").child(uid);
ValueEventListener eventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        String name = dataSnapshotds.child("name").getValue(String.class);
        Log.d("TAG", name);
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
uidRef.addListenerForSingleValueEvent(eventListener);

So you can now display all your users from your database, or only the logged-in user.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM