web-dev-qa-db-ja.com

子の値を取得する-firebase-

System.out.println(ref.child("[email protected]").child("_email"));

*私は子供の値を取得しようとしていますが、このコードで試しているときに値のURLを取得する方法の値のURLを取得するたびに、それは私に_email値を取得したいURLを取得します。

11
Mohamed Farahat

あなたは間違った角度からコンセプトを見ています。 ref.child("[email protected]").child("_email")を使用している間は、単にデータベース内の特定の場所を指しているだけで、それ以上は何もしていません。その特定の場所でデータを取得する場合は、次の2つの方法を検討してください。

最初にデータを1回だけ取得する場合は、次を実行できます。

 DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
 DatabaseReference mostafa = ref.child("Users").child("[email protected]").child("_email");

 mostafa.addListenerForSingleValueEvent(new ValueEventListener() {
 @Override
 public void onDataChange(DataSnapshot dataSnapshot) {
    String email = dataSnapshot.getValue(String.class);
    //do what you want with the email 
 }

 @Override
 public void onCancelled(DatabaseError databaseError) {

 }
 });

または、値をリアルタイムで取得し、データベース値が変更されるのと同時に、値が変更されるたびにそれを使用したい場合は、これを使用します:

mostafa.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
    String email = dataSnapshot.getValue(String.class);

    display.setText(email);
}

@Override
public void onCancelled(DatabaseError databaseError) {

}
});

2つの方法の違いに注意してください。 1つ目は1回だけ取得し、2つ目は値が変更されるたびにデータを取得することです。

投稿したコードは単なるテンプレートであり、少し遊んでみる必要があるかもしれないことを心に留めておいてください。

27
Ramtin

ref.child("[email protected]").child("_email")を使用すると、オブジェクトへの参照を設定するだけです。 データを取得するためのJava firebaseのドキュメント をご覧ください。

データを取得するには、参照用のリスナーを設定する必要があります

ref.child("[email protected]").child("_email").addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot snapshot) {
        // data available in snapshot.value()
    }
    @Override
    public void onCancelled(FirebaseError firebaseError) {
    }
});
2
adolfosrs