如何从 firebase 数据库中仅删除我的 recyclerview 中的选定项目 - android - java

How can I delete from firebase database only selected items in my recyclerview - andorid - 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();
                }
            }
        });
    }
}

我有一个数组列表,用于保存选定的项目,但是当我删除并返回 activity 时,它们再次出现,因为我找不到从 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() 来删除它们,或者您可以 运行 单个 multi-path 更新语句。第二个选项采用以下形式:

Map<String,Object> updates = new HashMap<>();
updates.put(s.getId());
updates.put(second.getId());
updates.put(third.getId())

databaseReference.updateChildren(updates).addOnCompleteListener(...);