【发布时间】:2019-07-23 14:57:48
【问题描述】:
我遇到了一个奇怪的问题,即使用 orderByChild() 的 Firebase 查询实际上并未对数据进行排序。下面是我试图订购的数据的快照:(为了这个例子,总数是关闭的)
这是我目前使用的代码:
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 位整数,则按字典顺序对键进行排序。
尽管顺序应该如图所示,但是我在循环地图时返回的数据不是这个顺序。
如果有人能指出我正确的方向,我将不胜感激。谢谢!
【问题讨论】:
-
您返回的数据是什么样的?您能否更新您的原始帖子以包含此内容?谢谢
标签: android firebase firebase-realtime-database