Получение данных через Обратный звонок - PullRequest
0 голосов
/ 19 октября 2018

Я пытаюсь получить пользовательское имя пользователя, которое пользователь в моем приложении устанавливает для себя из моей базы данных Firebase.У меня есть некоторый код, который работает нормально, но я не знаю точно, как установить мой TextView равным для получения данных, которые получает код.

Итак, вот метод, который идети получает имя пользователя из моей базы данных Firebase.

public void getUser(final MyCallback callback) {
    myRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            User user = dataSnapshot.child("Users").child(uid).child("userName").getValue(User.class);
            if (null!=callback) callback.onSuccess(user);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            //Log.d(TAG, "onCancelled: Error: " + databaseError.getMessage());
        }
    });
}

И затем у меня есть интерфейс, который имеет дело с обратным вызовом

public interface MyCallback{
    void onSuccess(User user);
}

И затем, наконец, я вызываю getUser() void, где яхочу, чтобы имя пользователя отображалось с помощью этого кода.

final TextView navuserName = findViewById(R.id.navUsername);
getUser(new MyCallback() {
    @Override public void onSuccess(User u) {
        navuserName.setText("hello");
    }
});

И где navuserName.setText("hello");, я хочу, чтобы отображалось имя пользователя.Но я не знаю, что поставить между скобками, чтобы получить String, который извлекает пустота getUser().

Вот так настроена моя база данных

{"BP07KgV4yHa0bqpt740kuFzJQGI2" : {
"email" : "sampleEmail@gmail.com",
"userName" : "testUsername"

1 Ответ

0 голосов
/ 19 октября 2018

В вашем классе User вам нужны getter и setter для вашего поля, в данном случае, имя пользователя.Добавьте их в переменную String, которую вы используете для хранения имени пользователя в своем классе User:Но если вы хотите получить только имя пользователя, вы должны использовать его следующим образом:

  User user = new User();
String username;
username = (String) dataSnapshot.child("Users").child(uid).child("userName").getValue();
user.setusername(username);

И чтобы получить данные для передачи в TextView, используйте user.getusername ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...