2017-09-26 155 views
0

enter image description here火力地堡得到一个孩子的孩子的参考

正如你看到的每个岗位都有不同的标识(用户谁张贴ID),我试图让这个孩子的参考fx3RqooRMOVRaQHGas4OWQnFK593例如所以数据库的参考将是这样的:

DatabaseReference myRef = FirebaseDatabase.getInstance().getReference().child("Posts").child("fx3RqooRMOVRaQHGas4OWQnFK593"); 

但我想要的是为每个帖子ID动态获取该引用。

+0

假设你正在使用FirbaseAuth也可以动态获取使用FirebaseAuth.getInstance用户ID()。getCurrentUser()的getuid( ) – gonephishing

+0

这只会与当前的用户帖子一起工作,我试图显示所有使用FirebaseRecyclerAdapter的帖子,这个需要引用并显示所有帖子 –

回答

0

您有2个选项。

  1. 如果你想下载一个单一的职位,那么你必须使用你的自定义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中存储按键。然后就叫逐一...

编码快乐:) :)

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); 

输出将是所有这些密钥。

+0

我的FirebaseRecyclerAdapter需要4个参数一个是数据库引用,所以我必须存储它在一个DatabaseReference变量中,然后使用它。 –

+0

因此,请随时做。上面的代码向您显示了您可以查询Firbease数据库并获取所需密钥的确切方式。 –

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) { 

       } 
      }); 
相关问题