2016-12-26 5 views
0

Ich habe eine Firebase-Datenbank so strukturiert, ich möchte die Kinder der Push-generierten ID, zum Beispiel correcta.Holen Sie sich das Kind einer zufälligen ID

Ich habe dies bisher getan, aber es wird nie etwas:

mdatabase=FirebaseDatabase.getInstance().getReference().child("Questions"); 
mdatabase.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 

      String key=dataSnapshot.getKey(); 
      DatabaseReference questiondatabase=mdatabase.child(key); 

      questiondatabase.addValueEventListener(new ValueEventListener() { 
       @Override 
       public void onDataChange(DataSnapshot dataSnapshot) { 
        Map<String, String> itemPrice = dataSnapshot.getValue(Map.class); 

        txtpregunta=itemPrice.get("pregunta"); 
        txtopcion1=itemPrice.get("opcion1"); 
        txtopcion2=itemPrice.get("opcion2"); 
        txtopcion3=itemPrice.get("opcion3"); 
        txtopcion4=itemPrice.get("opcion4"); 

        Map<String, Integer>correctagetter = dataSnapshot.getValue(Map.class); 

        correcta=correctagetter.get("correcta"); 
       } 

       @Override 
       public void onCancelled(DatabaseError databaseError) { 

       } 
      }); 

     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 

Firebase

Dank

+0

Sie haben einen Screenshot des JSON-Baums in Ihre Frage eingefügt. Bitte ersetzen Sie dies durch den tatsächlichen JSON als Text, den Sie einfach erhalten, wenn Sie auf den Link JSON exportieren in [Ihrer Firebase-Datenbankkonsole] klicken (https://console.firebase.google.com/project/_/database/data/). . Da der JSON als Text durchsuchbar ist, können wir ihn einfach verwenden, um mit Ihren tatsächlichen Daten zu testen und sie in unserer Antwort zu verwenden, und im Allgemeinen ist dies nur eine gute Sache. –

Antwort

2

Wenn Sie einen Wert Zuhörer zu einem Knoten anhängen, erhalten Sie einen Schnappschuss mit allen Daten unter diesem Knoten. Sie müssen keine weiteren Listener anhängen, um Daten im Baum tiefer zu erhalten.

Stattdessen müssen Sie über die Kinder des Schnappschusses iterieren nur:

DatabaseReference questionsRef = FirebaseDatabase.getInstance().getReference().child("Questions"); 
questionsRef.addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot questionsSnapshot) { 
    for (DataSnapshot questionSnapshot: questionsSnapshot.getChildren()) { 
     String questionKey = questionSnapshot.getKey(); 
     String pregunta = questionSnapshot.child("pregunta").getValue(String.class); 
     String opcion1 = questionSnapshot.child("opcion1").getValue(String.class); 
    } 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) { 
    throw databaseError.toException(); 
    } 
}); 

I sehr empfehlen, den Firebase codelab for Android nehmen.

+0

Danke Mann, ich habe noch einen Zweifel, wie kann ich das "Correcta" als Int abrufen? –

+0

'Ganzzahl correcta = questionSnapshot.child (" correcta "). GetValue (Integer.class);' Haben Sie das Codelab genommen? –

Verwandte Themen