Чтение дочернего значения из firebase

#android

#Android

Вопрос:

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

введите описание изображения здесь

и пытается сделать что-то подобное в моем коде

         DatabaseReference myRef = FirebaseDatabase.getInstance().getReference().child("users").child("userID");
    myRef.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            String email = dataSnapshot.getValue(String.class);
            //do what you want with the email
            setDisplayName.setText(email);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            setDisplayName.setText("data not get"   databaseError );
        }
    });
 

Ответ №1:

Если вы хотите получать только электронное письмо, вы можете сделать что-то вроде этого :

    DatabaseReference myRef = FirebaseDatabase.getInstance().getReference().child("users").child("userID");
myRef.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        String email = dataSnapshot.child("email").getValue().toString();
        //do what you want with the email
        setDisplayName.setText(email);
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        setDisplayName.setText("data not get"   databaseError );
    }
});
 

Если вы не хотите загружать другие данные, вы можете напрямую запросить электронное письмо следующим образом :

  DatabaseReference myRef = FirebaseDatabase.getInstance().getReference().child("users").child("userID").child("email");
myRef.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        String email = dataSnapshot.getValue().toString();
        //do what you want with the email
        setDisplayName.setText(email);
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        setDisplayName.setText("data not get"   databaseError );
    }
});