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()
但沒有成功。
謝謝。