从ValueEventListener获取相关密钥

时间:2016-10-09 12:14:04

标签: android firebase firebase-realtime-database

我正在建立一个基本上是足球桌的应用程序,每次我在我的数据库中更改它时都会更新。

我以这种方式使用Firebase:

enter image description here

我试图使用addValueEventListener,但我不知道哪一个值是变化的(差异,分数,分数......)因此我不会&# 39;我表中哪个字段应该更新。

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);
}
}

请看这里,当我们说我更新housaA的名字时,我想找回更新的密钥(在我的情况下,name),但是当我使用时 dataSnapshot.getKey()我要回来的Toast是HouseA而不是name

1 个答案:

答案 0 :(得分:0)

您将无法使用valuelistener执行此操作。

而是将一个childeventlistener放在houseA上。

现在在onChildChanged中,您应该获得houseA下的子节点,该节点已更改为数据快照,并且从此快照中,您可以获得已更改的密钥