【发布时间】:2016-07-01 22:36:59
【问题描述】:
如何更新 Firebase 数据库中的项目列表。我可以使用 setValue 来设置新列表,但我找不到如何添加列表中的一项。 (我不想发送所有列表项以仅更新一项)。
在此示例中,我尝试执行此操作,但方法 ref.updateChildren 无法正常工作。它显示了 databaseReference,但我在 Firebase 上看不到任何变化。
final DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("apps");
for (final App app : apps) {
ref.child(app.getFirebaseKey()).addValueEventListener(new ValueEventListener(){
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (!dataSnapshot.exists()) {
ref.setValue(app.getFirebaseValue());
} else {
//check need add my phone or no.
FirebaseApp firebaseApp = dataSnapshot.getValue(FirebaseApp.class);
String myPhone = app.getFirebaseValue().getPhones().get(0);
if (firebaseApp.getPhones().contains(myPhone)) {
//do nothing
} else {
firebaseApp.getPhones().add(myPhone);
Map<String, Object> updates = new HashMap<String, Object>();
updates.put("phones", firebaseApp.getPhones());
ref.updateChildren(updates, new DatabaseReference.CompletionListener() {
@Override
public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) {
if (databaseError == null) {
Log.i(TAG, "databaseReference=" + databaseReference);
} else {
Log.i(TAG, "databaseError=" + databaseReference);
}
}
});
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
【问题讨论】:
标签: java android firebase firebase-realtime-database