2017-04-08 5 views

Antwort

13

Um auf einen Wert in Ihrer Datenbank zuzugreifen, erstellen Sie einen DatabaseReference für diesen Speicherort. Hier sind drei Hinweise auf Standorte in Ihrer Datenbank:

DatabaseReference zonesRef = FirebaseDatabase.getInstance().getReference("ZONES"); 
DatabaseReference zone1Ref = zonesRef.child("ZONE_1"); 
DatabaseReference zone1NameRef = zone1Ref.child("ZNAME"); 

In diesem Snippet:

  • zonesRef Punkte /ZONES
  • zone1Ref Punkte /ZONES/ZONE_1
  • zone1NameRef Punkte /ZONES/ZONE_1/ZNAME

Weitere Informationen finden Sie unter Firebase documentation on getting a database reference.

Sie können jeder Referenz einen Listener hinzufügen, um den Wert an dieser Position zu ermitteln.

zone1NameRef.addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     Log.i(TAG, dataSnapshot.getValue(String.class); 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) { 
     Log.w(TAG, "onCancelled", databaseError.toException()); 
    } 
}); 

Weitere Informationen zu dieser Art von Lesevorgang finden Sie in der Firebase documentation on reading values: Zum Beispiel, um den Wert des /ZONES/ZONE_1/ZNAME zu erhalten.

Wenn Sie stattdessen auf /ZONES/ZONE_1 hören, erhalten Sie eine DataSnapshot des gesamten Knotens mit all seinen Eigenschaften. Sie dann DataSnapshot.child() verwenden, um die ZNAME davon zu bekommen:

zone1Ref.addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     Log.i(TAG, dataSnapshot.child("ZNAME").getValue(String.class); 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) { 
     Log.w(TAG, "onCancelled", databaseError.toException()); 
    } 
}); 

Eine weitere Ebene, können Sie auf /ZONES hören, die Sie mit allen Zonen eine Momentaufnahme erhalten. Da diese mehrere Kinder behandelt, müssen Sie durch sie in einer Schleife mit DataSnapshot.getChildren():

zonesRef.addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     for (DataSnapshot zoneSnapshot: dataSnapshot.getChildren()) { 
      Log.i(TAG, zoneSnapshot.child("ZNAME").getValue(String.class); 
     } 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) { 
     Log.w(TAG, "onCancelled", databaseError.toException()); 
    } 
}); 

Denn auf diese mehr, die Firebase documentation on listening for lists of data sehen.

Schließlich könnten Sie eine bestimmte Zone zu finden, zum Beispiel abfragen möchten die Zone mit "ZCODE": "ECOR" zu finden:

Query zonesQuery = zonesRef.orderByChild("ZCODE").equalTo("ECOR"); 
zonesQuery.addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     for (DataSnapshot zoneSnapshot: dataSnapshot.getChildren()) { 
      Log.i(TAG, zoneSnapshot.child("ZNAME").getValue(String.class); 
     } 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) { 
     Log.w(TAG, "onCancelled", databaseError.toException()); 
    } 
}); 

Um mehr darüber zu erfahren, lesen Sie die Firebase documentation on sorting and filtering data.

+0

Vielen Dank, es hat für mich gearbeitet. – Surekha

+0

Sehr einfache und klare Erklärung. Mach weiter mit der Firebase Api Exploration !!! – VVB