1
这是我在Stackoverflow中的第一个问题。 我用火力点在我的Android应用程序,和我的数据库模式如下:嵌套在另一个侦听器中的Android Firebase值事件侦听器以异常方式获取数据
用户模式:
和
帖子模式:
现在,我使用回收站来显示用户的帖子。我已经实现了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()
但没有成功。
谢谢。