我如何从firebase数据库中删除只选择项目在我的recyclerview - android - java



删除方法

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(...);

最新更新