我是 Firebase 的新手,我想按时间戳对数据进行排序,我的数据库位于下面,这里键是时间戳
我用于检索数据的代码如下
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("MainDoor");
Query dataOrderedByKey = myRef.orderByChild("{pushId}/key");
dataOrderedByKey.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Map<String, MyListData> value = ((HashMap<String, MyListData>) dataSnapshot.getValue());
这里我获得的值(value)不是按键的顺序
我得到如下数据,但未按排序顺序
最佳答案
Map
中的数据根据定义未排序。因此,当您调用 dataSnapshot.getValue()
时,有关 DataSnapshot
中项目顺序的所有信息都会列出。
要维持顺序,请使用支持该顺序的数据结构(例如列表),并通过循环 DataSnapshot.getChildren()
以正确的顺序提取各个项目。
所以类似:
dataOrderedByKey.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot snapshot: dataSnapshot.getChildren()) {
System.out.println(snapshot.getKey());
MyListData value = snapshot.getValue()
}
}
...
关于android - OrderByChild() 没有对我的 firebase 数据进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58010310/