火力地堡得到一个孩子的孩子的参考
正如你看到的每个岗位都有不同的标识(用户谁张贴ID),我试图让这个孩子的参考fx3RqooRMOVRaQHGas4OWQnFK593例如所以数据库的参考将是这样的:
DatabaseReference myRef = FirebaseDatabase.getInstance().getReference().child("Posts").child("fx3RqooRMOVRaQHGas4OWQnFK593");
但我想要的是为每个帖子ID动态获取该引用。
您有2个选项。
- 如果你想下载一个单一的职位,那么你必须使用你的自定义postId。你不能使用pushId()。这样你就会知道你想下载并显示哪个文章。
如何让自定义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中存储按键。然后就叫逐一...
编码快乐:) :)
要做到这一点,请使用以下代码:
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);
输出将是所有这些密钥。
我的FirebaseRecyclerAdapter需要4个参数一个是数据库引用,所以我必须存储它在一个DatabaseReference变量中,然后使用它。 –
因此,请随时做。上面的代码向您显示了您可以查询Firbease数据库并获取所需密钥的确切方式。 –
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) {
}
});
假设你正在使用FirbaseAuth也可以动态获取使用FirebaseAuth.getInstance用户ID()。getCurrentUser()的getuid( ) – gonephishing
这只会与当前的用户帖子一起工作,我试图显示所有使用FirebaseRecyclerAdapter的帖子,这个需要引用并显示所有帖子 –