2016-06-24 17 views
4
System.out.println(ref.child("[email protected]").child("_email")); 

* i`m einen Wert von Kind zu bekommen versucht, aber alle Mal, wenn ich die URL des Wertes erhalten , wie der Wert dieser URL zu erhalten, wie ich durch diesen Code versuchen, aber es hol mir die URLi will den _email Wert bekommen.Abrufen von Kinder Wert -firebase-

Antwort

12

Sie suchen einen Listener für Ihre Referenz einstellen müssen. Während Sie die ref.child("[email protected]").child("_email") verwenden, zeigen Sie einfach nur auf einen bestimmten Ort in Ihrer Datenbank und nicht mehr. Wenn Sie die Daten an diesem bestimmten Ort abrufen möchten, berücksichtigen Sie diese beiden Möglichkeiten.

zuerst, wenn Sie nur einmal die Daten abrufen möchten, können Sie wie folgt vorgehen:

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) { 

} 
}); 

oder vielleicht wollen Sie den Wert in Echtzeit abrufen und in der gleichen Zeit verwenden, dass der Datenbankwert geändert wird, werden alle in der gleichen Zeit, wann immer in dem Wert geändert, dann verwenden Sie diese:

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) { 

} 
}); 

Beachten Sie den Unterschied zwischen den beiden Methoden. Zuerst wird nur einmal abgerufen und die zweite dient zum Abrufen der Daten, wenn der Wert geändert wird.

Denken Sie nur daran, dass die Codes, die ich gepostet habe, nur Vorlagen sind und vielleicht ein wenig mit ihnen spielen müssen.

+0

upvoted für 'addValueEventListener'. –

1

Mit ref.child("[email protected]").child("_email") Sie setzen nur die Referenz auf das Objekt. Werfen Sie einen Blick auf die java firebase documentation to retrieve data.

die Daten erhalten Sie

auf das Konzept aus dem falschen Winkel
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) { 
    } 
});