android - 删除在 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();
}
}
});
解决方案
要删除用户节点下的项目,您需要知道该项目的键。因此,例如要删除 item -LX5Db4_suS_wPjzRDLE
,您需要:
database.getReference("Donation Post").child(user.getUid()).child("-LX5Db4_suS_wPjzRDLE").removeValue();
如果项目在列表中,并且您想删除用户单击的项目,您通常会有一个OnItemClickListener
,并且您OnItemClick
将被告知用户单击的项目的位置。您需要将此位置映射回一个键,然后运行上面的代码。
如果您使用FirebaseUI 的内置适配器来显示 中的项目ListView
,您可以获得对单击项目的引用,如下所示:如何在与 FirebaseListAdapter 一起使用的 ListView 中删除当前选定的项目?
推荐阅读
- javascript - 用于动画功能效果搜索图标高度的 Jquery 切换操作
- javascript - 混合 contenteditable OR Markdown 和 EJS
- android - HID USB 设备 - 发送和接收数据
- hyperledger-fabric - 业务网卡导入失败
- javascript - Leaflet D3js:Hexbin 鼠标悬停
- c# - 在 Razor 页面中访问异步属性
- html - CSS子网格元素溢出问题
- git - 是否可以将 git remote url 设置为存储库中的子文件夹?
- javascript - 使用 SignedUrl 将文件上传到 Google Cloud Storage
- node.js - 从 Firehose 写入 Redshift 时出现 Redshift.DataLoadFailed