我正在建立一个基本上是足球桌的应用程序,每次我在我的数据库中更改它时都会更新。
我以这种方式使用Firebase:
我试图使用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
。
答案 0 :(得分:0)
您将无法使用valuelistener执行此操作。
而是将一个childeventlistener放在houseA上。
现在在onChildChanged中,您应该获得houseA下的子节点,该节点已更改为数据快照,并且从此快照中,您可以获得已更改的密钥