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());
            }
        });
    }
