2017-09-10 222 views
1

這是我在Stackoverflow中的第一個問題。 我用火力點在我的Android應用程序,和我的數據庫模式如下:嵌套在另一個偵聽器中的Android Firebase值事件偵聽器以異常方式獲取數據

用戶模式:

Users schema

帖子模式:

Posts schema

現在,我使用回收站來顯示用戶的帖子。我已經實現了SingleValueEventListener,其中我得到用戶的帖子列表和嵌入其中的另一個eventlistener以獲取用戶的姓名和個人資料圖片。

的代碼如下:

Query query = databaseReference.child("Posts"); 
     query.addListenerForSingleValueEvent(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
       for(DataSnapshot data : dataSnapshot.getChildren()) 
       { 
        final PostsPOJO postsPOJO = data.getValue(PostsPOJO.class); 
        images = postsPOJO.getcontent_post(); 

        //Nested listener to fetch User's name and profile picture from another node "Users/UserID" 
        final Query userDetails = databaseReference.child("Users/"+postsPOJO.getUserID()); 
        mListener = new ValueEventListener() { 

         @Override 
         public void onDataChange(DataSnapshot dataSnapshot1) { 

          String username = dataSnapshot1.child("Username").getValue(String.class); 
          String profilePicturePath = dataSnapshot1.child("ProfilePicture").getValue(String.class); 

          list.add(new PostsPOJO(postsPOJO.getUserID(),profilePicturePath ,username, postsPOJO.getTimestamp(),postsPOJO.getPostText(),postsPOJO.getLocation(),postsPOJO.getcontent_post())); 
          Log.d("datalist", postsPOJO.getUserID()+","+profilePicturePath +","+username+","+postsPOJO.getTimestamp()+","+postsPOJO.getPostText()+","+postsPOJO.getLocation()+","+postsPOJO.getcontent_post()); 

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

        userDetails.addListenerForSingleValueEvent(mListener); 
       } 
      } 
      @Override 
      public void onCancelled(DatabaseError databaseError) { 
      } 
     }); 

現在的問題是,其嵌套監聽獲得的第一個用戶名時,它從特定的用戶名首先是所有的帖子,然後進入下一個用戶名例如,如果它獲取UserID:1,那麼它將首先給出該用戶的所有帖子,然後繼續下一個,如果其UserID:2,則反之亦然。我想通過與該帖子相關聯的用戶標識發佈帖子數據。

我實施了.orderByKey()但沒有成功。

謝謝。

回答

0

你可以把交IDS下用戶數據等

用戶 - > 1 - >文章 - > [帖子ID-1,帖子ID-2,帖子ID-3]