I have a database like this,
Users
COd3XoRnWOMRIFrbYSrNMZjm2Jj2
admin: false
email: "test@test.com"
name: "aa"
surname: "aa"
username: "test"
KtUAjavm3TUmonRXl37CS4ePhuK2
admin: false
email: "test2@test.com"
name: "aa"
surname: "bb"
username: "test"
And I have a User class. I want to fetch the user data from database, create a User instance and using user.getUsername()
method, get the username that I fetched from database. But when use the code below, user.getUsername()
returns null.
User user = new User("USER_ID");
user.getUsername();
This is my constructor,
public User(String id) {
UID = id;
Users = database.getReference("Users").child(id);
Users.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.exists()) {
Log.d(TAG, UID);
username = (String) dataSnapshot.child("username").getValue();
email = (String) dataSnapshot.child("email").getValue();
surname = (String) dataSnapshot.child("surname").getValue();
name = (String) dataSnapshot.child("name").getValue();
admin = (Boolean) dataSnapshot.child("admin").getValue();
} else {
Log.e(TAG, "Invalid UID");
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.w(TAG, "loadPost:onCancelled", databaseError.toException());
}
});
}