删除方法
private void deleteExpense(Expense s) {
if (dialogConfirmed) {
DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference().child("Expenses").child(Objects.requireNonNull(FirebaseAuth.getInstance().getCurrentUser()).getUid());
databaseReference.child(s.getId()).removeValue().addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (!task.isSuccessful()) {
Toast.makeText(activity, activity.getString(R.string.input_error) + task.getException(), Toast.LENGTH_SHORT).show();
}
}
});
}
}
我有一个数组列表,我保存选定的项目,但当我删除并回到活动,他们再次出现,因为我找不到一种方法来删除他们从firebase。有谁能告诉我如何把我的选择列表从firebase中删除这些项目吗?
根据他们的回答,我试了一下,但仍然没有运气。
private void deleteExpense() {
if (dialogConfirmed) {
DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference().child("Expenses").child(Objects.requireNonNull(FirebaseAuth.getInstance().getCurrentUser()).getUid());
Map<String, Object> delete = new HashMap<>();
for (Expense i : selectedExpenses) {
delete.put("item" + i, null);
}
databaseReference.updateChildren(delete).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
}
});
}
}
如果您想要删除多个项目,您可以通过为每个项目调用removeValue()
来删除它们,或者您可以运行单个多路径更新语句。第二个选项的形式是:
Map<String,Object> updates = new HashMap<>();
updates.put(s.getId());
updates.put(second.getId());
updates.put(third.getId())
databaseReference.updateChildren(updates).addOnCompleteListener(...);