如何从 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(...);
删除方法
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(...);