2017-09-26 162 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) { 

       } 
      }); 
相關問題