2016-10-09 6 views
0

Ich baue eine App, die im Grunde eine Tabelle für Fußball ist, die jedes Mal aktualisiert, wenn ich es in meiner DB ändere.Abrufen des relevanten Schlüssels von ValueEventListener

Ich benutze Firebase auf diese Weise:

enter image description here

Ich versuche, eine addValueEventListener zu verwenden, aber ich weiß nicht, welcher der Werte der ist, der (dif ändert, Punktzahl, Punkte ...) daher nicht, welches Feld in meiner Tabelle ich aktualisieren soll.

public class table extends AppCompatActivity { 
Button insert; 
TextView name, games, win, lost, tie, score, dif, points; 
Team A; 
DatabaseReference mRootRef = FirebaseDatabase.getInstance().getReference(); 
DatabaseReference FootballRef = mRootRef.child("Football"); 
DatabaseReference HouseARef = FootballRef.child("HouseA"); 


protected void onStart() { 
    super.onStart(); 
    ValueEventListener postListener = new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      // Get Post object and use the values to update the UI 
      String key = dataSnapshot.getKey() ; 
      Toast.makeText(table.this,key, Toast.LENGTH_SHORT).show(); 
      // ... 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 
      // Getting Post failed, log a message 

      // ... 
     } 
    }; 
    HouseARef.addValueEventListener(postListener); 
} 
} 

Sehen Sie hier, wenn wir sagen, dass ich den Namen housaA bin zu aktualisieren, ich möchte den Schlüssel zurück zu bekommen, die aktualisiert wurde (in meinem Fall, name), aber wenn ich mit dataSnapshot.getKey() der Toast Ich bekomme zurück ist HouseA und nicht name.

+0

Sie haben ein Bild des JSON Baum, die in Ihrem Frage. Bitte ersetzen Sie dies durch den tatsächlichen JSON als Text, den Sie einfach erhalten, indem Sie in der Firebase-Datenbankkonsole auf die Schaltfläche "Exportieren" klicken. 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

0

Sie können dies nicht mit einem Wertelistener tun.

Stattdessen legen Sie einen childeventlistener auf das Haus.

nun innerhalb onChildChanged, sollten Sie die Kindknoten unter houseA erhalten, die als datasnapshot und von diesem Snapshot geändert hat, können Sie den Schlüssel erhalten, die sich geändert hat

+0

Sie müssen die JSON-Baumstruktur teilen, wenn Sie diese Antwort genauer als diese sein möchten, obwohl .... – Kushan

+0

danke, ich habe onChild verwendet und es funktioniert :) –

+0

froh, dass ich geholfen habe :) – Kushan

Verwandte Themen