2017-05-21 8 views

Antwort

0

Alex Antwort wird funktionieren (mit meinem Kommentar für ein gutes Maß).

Aber Sie sollten wissen, dass dies alle Daten aller Benutzer herunterlädt. In der Firebase-Datenbank gibt es keine Möglichkeit, nur eine Eigenschaft jedes Knotens herunterzuladen. Wenn Sie also nur die Liste der Namen effizient herunterladen möchten, sollten Sie genau das in der Datenbank behalten: eine Liste von Namen.

usernames 
    uid1: "Fernando" 
    uid2: "Alex" 

diese Weise können Sie nur die Liste der Namen mit lesen:

DatabaseReference usernamesRef = FirebaseDatabase.getInstance().getReference().child("usernames"); 

usernamesRef.addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) { 
      String uid = childSnapshot.getKey(); 
      String name = childSnapshot.getValue(String.class); 
     } 
+0

Definitiv, das ist die richtige Antwort. –

+0

Danke für den Tipp @FrankvanPuffelen, es hat sehr geholfen –

+0

Gut zu hören. Wenn meine Antwort nützlich war, klicken Sie auf den Upvote-Button links davon. –

1

Ja, es ist möglich. Bitte verwenden Sie diesen Code:

DatabaseReference yourRef = FirebaseDatabase.getInstance().getReference().child("usuarios"); 

usersRef.addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     List<String> list = new ArrayList<>(); 
     for (DataSnapshot ds : dataSnapshot.getChildren()) { 
      String uId = (String) ds.getKey(); 
      String nome = ds.getChild("nome").getValue(String.class); 
      list.add(nome); 
     } 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) { 
     throw databaseError.toException(); // don't ignore errors 
    } 
}); 

Sie zuerst Iterierte, um diese UID zu erhalten und dass sie, nachdem sie in der DatabaseReference verwenden.

Ich hoffe, es hilft.

+0

Der erste Hörer alle 'usuarios' wird gelesen. Der zweite Listener wird nicht benötigt, Sie können einfach 'ds.getChild (" nome "). GetValue (String.class)' in der Schleife verwenden. –

+0

@FrankvanPuffelen Du hast recht Frank, danke! –

+0

Und wenn im Fall @AlexMamo ich möchte alle "Namen" innerhalb einer Liste einfügen wie? –