我遇到了一个奇怪的问题,其中使用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()
方法?你可否请更新你的原始文章,包括这个?谢谢 –