我遇到了一個奇怪的問題,其中使用orderByChild()
的Firebase查詢並未實際排序數據。下面是我想對數據進行排序的快照:(一共是關閉這個例子的目的)使用Firebase訂購數據Android
這是我到目前爲止已經使用的代碼:
Query query = locationComment.orderByKey();
query.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.getValue() == null) {
return;
}
data.clear();
adapter.notifyDataSetChanged();
String userId;
String time;
String comment;
Map<String, String> commentMap = (Map) dataSnapshot.getValue();
for (Map.Entry<String, String> entry : commentMap.entrySet()) {
if(!((entry.getKey()).contains("total"))) {
String[] keyString = (entry.getKey()).split(",");
time = keyString[0];
userId = keyString[1];
comment = entry.getValue();
Date resultdate = new Date(Integer.parseInt(time));
data.add(new Comment(comment,
DateFormat.getDateTimeInstance().format(resultdate), userId));
adapter.notifyItemInserted(data.size());
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
我得到每一個鍵值對(除了總數),除了它不按預期順序(按鍵排序)。 Firebase文檔說,如果不能將它們解析爲32位整數,則按鍵按照字典順序排列。
無論哪種方式,儘管順序應該如圖所示,但我通過地圖循環獲取的數據不是按此順序。
我真的很感激,如果有人能指出我在正確的方向。謝謝!
是什麼數據看起來像你回來爲了防止這種情況,你應該使用
DataSnapshot.getChildren()
方法?你可否請更新你的原始文章,包括這個?謝謝 –