正如您所看到的每个帖子都有不同的 ID (发布的用户ID)我试图获取此孩子 fx3RqooRMOVRaQHGas4OWQnFK593 的引用,例如数据库引用将是这样的:
DatabaseReference myRef = FirebaseDatabase.getInstance().getReference().child("Posts").child("fx3RqooRMOVRaQHGas4OWQnFK593");
但我想要的是为每个帖子ID动态获取该引用。
答案 0 :(得分:0)
要实现此目的,请使用以下代码:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference postsRef = rootRef.child("Posts");
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String key = ds.getKey();
Log.d("TAG", key);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
postsRef.addListenerForSingleValueEvent(eventListener);
输出将是所有这些键。
答案 1 :(得分:0)
FirebaseDatabase.getInstance()
.getReference()
.child("Posts")
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot snapshot : dataSnapshot.getChildren()){
String key = snapshot.getKey(); // key here
Object value = snapshot.getValue(); // value here
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
答案 2 :(得分:0)
你有两个选择。
如何制作自定义ID
FirebaseDatabase.getInstance().getReference().child("Posts")
.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
HashMap<String, Object> post = (HashMap<String, Object>) dataSnapshot.getValue();
total= post.size();
}
}
然后创建自定义ID
FirebaseDatabase.getInstance().getReference().child("Posts").child("post"+total).setValue(YourValue);
选项2.
只需从帖子节点下载所有帖子,因为你必须...
FirebaseDatabase.getInstance().getReference().child("Posts")
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot snapshot : dataSnapshot.getChildren()){
//here is your every post
String key = snapshot.getKey();
Object value = snapshot.getValue();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
加成 如果你想显示特定用户的帖子。 (我假设) 你可以将按键存储在字符串arrylist中的用户对象中。然后一个一个地打电话给他们......
快乐编码:):)