首页 > 解决方案 > 删除在 Android Studio 中使用推送创建的 Firebase 实时数据库中的随机第二个孩子

问题描述

我将用户帖子数据存储在 firebase 实时数据库中,并在列表视图中显示这些帖子。我已经在按钮单击侦听器上设置了列表视图,以便用户可以根据需要将其删除。我使用了 push(),所以当用户发布新帖子时会生成随机密钥。现在我无法删除它。我也尝试将该键作为子键,但我没有找到任何方法来删除它。任何帮助深表感谢。

我要这个

我希望仅当用户从列表视图中单击此帖子时才删除此“-LX5Db4_suS_wPjzRDLE”。因为我正在使用它来显示用户帖子历史记录,所以我只能为当前用户使用 getUid() 获取第一个孩子。

这是我尝试过的代码,

 FirebaseDatabase database=FirebaseDatabase.getInstance();
final DatabaseReference ref=database.getReference("Donation Post").child(user.getUid());

ref.removeValue().addOnCompleteListener(new OnCompleteListener<Void>() {
    @Override
    public void onComplete(@NonNull Task<Void> task) {

        if (task.isSuccessful()){
            Toast.makeText(UserPostHistoryActivity.this, "Post Deleted Successfully", Toast.LENGTH_SHORT).show();
        }else {
            Toast.makeText(UserPostHistoryActivity.this, "Post Not Deleted!!!", Toast.LENGTH_SHORT).show();

        }
    }
});

标签: androidfirebasefirebase-realtime-database

解决方案


要删除用户节点下的项目,您需要知道该项目的键。因此,例如要删除 item -LX5Db4_suS_wPjzRDLE,您需要:

database.getReference("Donation Post").child(user.getUid()).child("-LX5Db4_suS_wPjzRDLE").removeValue();

如果项目在列表中,并且您想删除用户单击的项目,您通常会有一个OnItemClickListener,并且您OnItemClick将被告知用户单击的项目的位置。您需要将此位置映射回一个键,然后运行上面的代码。

如果您使用FirebaseUI 的内置适配器来显示 中的项目ListView,您可以获得对单击项目的引用,如下所示:如何在与 FirebaseListAdapter 一起使用的 ListView 中删除当前选定的项目?


推荐阅读