【问题标题】:get id of node in firebase by item in recyclerView通过recyclerView中的项目获取firebase中节点的ID
【发布时间】:2021-09-08 22:08:50
【问题描述】:

我想通过单击 cardView 中的元素来访问这一点 我只能通过这条线到达它之前的点

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

【问题讨论】:

  • 如果你想访问它,你需要做for loop

标签: java android firebase firebase-realtime-database


【解决方案1】:

要获取子节点的键,您需要加载引用,然后循环 snapshot.getChildren()。所以像:

reference.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) {
            System.out.println(postSnapshot.getKey());
            ...
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        throw databaseError.toException();
    }
}

如果您只想检索一个特定节点,则需要知道该节点的键。通常这意味着您需要在读取数据时保留每个快照的密钥,并将其与回收器视图中每个节点的位置相关联。一旦用户单击视图中的某个项目,您就可以根据他们单击的位置查找键,然后可以通过以下方式再次从数据库中获取该项目:

reference.child(key).addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        System.out.println(dataSnapshot.getKey());
        ...
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        throw databaseError.toException();
    }
}

有关更多信息,请参阅:

【讨论】:

  • 我不想要所有节点。我只想要在 recyclerView 中单击它的节点
  • 我也添加了有关该用例的更多信息。
猜你喜欢
  • 2015-05-21
  • 2017-05-15
  • 1970-01-01
  • 2013-11-16
  • 2021-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-10
相关资源
最近更新 更多