You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在点击RecyclerView中条目时获取Firebase对应节点的ID

enter image description here

你现在的代码已经拿到了对应用户的Posts父节点引用,要获取点击的CardView对应子节点,按以下步骤实现即可:

  • 给你的Post数据实体类新增一个String类型的key字段,用来存储每个子节点的唯一key
  • 从Firebase拉取列表数据时,把每个子节点的key存入对应Post实体的key字段
  • 在列表Adapter的绑定逻辑中给CardView设置点击事件,点击时取出对应实体的key,拼接父引用即可得到目标节点的引用

代码示例

你现有父节点引用无需修改:

reference = FirebaseDatabase.getInstance().getReference("Posts")
            .child(FirebaseAuth.getInstance().getCurrentUser().getUid());
String str =  reference.getKey();

列表数据拉取逻辑:

reference.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot snapshot) {
        postList.clear();
        for (DataSnapshot childSnapshot : snapshot.getChildren()) {
            Post post = childSnapshot.getValue(Post.class);
            // 存储当前子节点的唯一标识key
            post.setKey(childSnapshot.getKey());
            postList.add(post);
        }
        postAdapter.notifyDataSetChanged();
    }

    @Override
    public void onCancelled(@NonNull DatabaseError error) {
        // 按需添加异常处理逻辑
    }
});

Adapter内点击事件绑定逻辑:

@Override
protected void onBindViewHolder(@NonNull PostViewHolder holder, int position, @NonNull Post currentPost) {
    // 原有列表项内容赋值逻辑保持不变
    // 绑定CardView点击事件
    holder.cardView.setOnClickListener(v -> {
        // 直接获取点击项对应的节点引用
        DatabaseReference targetNodeRef = reference.child(currentPost.getKey());
        // 后续可对targetNodeRef执行增删改查等任意操作
    });
}

内容的提问来源于stack exchange,提问作者Hager Khaled

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 01:27:02