2017-07-14 63 views
0

我一直在環視所有的示例和Firebase文檔,以瞭解我想要實現的想法和解決方案,但幾乎沒有運氣。我還是相當新的firebase,所以請裸露在我身邊。Firebase Android - 檢索有關組中所有用戶的信息

我該如何去檢索有關單個查詢對象中同一組中用戶的所有信息?這是爲了填充用戶顯示的某個列表ui。我正在使用FirebaseRecyclerAdapter,並且在其構造函數中它需要一個查詢對象。我的數據結構與Firebase文檔中「結構化數據庫」頁面上的結構相同。

在我的特殊情況下,我試圖獲取一個查詢對象中已被單個用戶加入書籤的所有故事。我下面的數據的結構如下所示:

Stories structure

Users structure

我試圖做到這一點:

Query recentPostsQuery = databaseReference.child("users/" + uid + "/bookmarks"); 
    recentPostsQuery.addListenerForSingleValueEvent(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      for (DataSnapshot storySnapshot : dataSnapshot.getChildren()) { 
       databaseReference.child("stories/" + storySnapshot.getKey()); 
      } 
     } 

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

但是,它不工作,我不是太當然爲什麼..任何幫助,關於我想做的事情將不勝感激。

謝謝〜

+0

什麼錯誤,你好嗎? –

+0

當我切換到顯示此列表的片段時,它只是崩潰的應用程序.. –

+0

請發佈崩潰日誌 –

回答

0

我想你有一個列表來存儲故事和模型類的故事。

Query recentPostsQuery = databaseReference.child("users/" + uid + "/bookmarks"); 
recentPostsQuery.addListenerForSingleValueEvent(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     for (DataSnapshot storySnapshot : dataSnapshot.getChildren()) { 
      databaseReference.child("stories/" + storySnapshot.getKey()).addListenerForSingleValueEvent(new ValueEventListner(){ 
       @Override 
       public void onDataChange(DataSnapshot dataSnapshot) { 
       //Stories your model class 
        for (DataSnapshot story : dataSnapshot.getChildren()){ 
        Stories story = story.getValue(Stories.class); 
        //add story to list for showing in recycler view 
        // also call adapter.notifyDataSetChanged(); 
        } 
       } 
       @Override 
       public void onCancelled(DatabaseError databaseError) {} 
      }); 
     } 
    } 

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

我想這有助於..

+0

嗨,感謝您的回覆。是的,這是我以前的方式,我已經在我的代碼中實現了這個查詢。然而,我使用的是FirebaseRecyclerAdapter,它似乎有點不同,因爲它可以處理故事列表,並在沒有我做任何事情的情況下通知我。 –

+0

在這種情況下,我會建議您選擇自定義適配器,以便您擁有控制顯示的數據。它並不困難 –