0
我的火力數據庫具有以下結構:的Android - 火力地堡多對多的關係孩子聽衆
tasks
- task_key_1:{
- name: "task 1"
- ...
- users{
user_key_1 : true
}
}
users
- user_key_1{
tasks{
task_key_1 : true
}
}
現在,我想在活動中顯示的用戶的任務列表。我發現這個方法,它的工作:
myTasks.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String previousChildName) {
taskReference.child(dataSnapshot.getKey()).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
...
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.e(TAG, databaseError.toString());
}
});
}
public void onChildRemoved(DataSnapshot dataSnapshot) {
taskReference.child(dataSnapshot.getKey()).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot taskSnapshot) {
......
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.e(TAG, databaseError.toString());
}
});
}
public void onChildChanged(DataSnapshot dataSnapshot, String previousChildName) {
taskReference.child(dataSnapshot.getKey()).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot taskSnapshot) {
Log.w(TAG, "on child changed")
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.e(TAG, databaseError.toString());
}
});
});
}
public void onChildMoved(DataSnapshot dataSnapshot, String previousChildName) {
Log.w(TAG, "onChildMoved");
}
@Override
public void onCancelled(DatabaseError error) {}
});
其中: mytasks是/用戶/用戶名/任務 參考,taskReference是/任務/ taskKeyOwnedByUser。
我的問題是:如何檢測對任務的更改,即用戶何時更改其標題,然後更新列表UI?看起來OnChildChanged中的「Log.w」永遠不會被調用。
預先感謝您
謝謝,我會試試看。我想知道,也許有一種方法可以使用由firebase創建的「標準」鍵來完成此操作,而無需對其進行自定義。 – Spyga
@Spyga你的意思是什麼鍵? task_key或? – Wilik