2017-09-10 171 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]