android - OrderByChild() 没有对我的 firebase 数据进行排序

标签 android firebase firebase-realtime-database

我是 Firebase 的新手,我想按时间戳对数据进行排序,我的数据库位于下面,这里键是时间戳

My database

我用于检索数据的代码如下

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)不是按的顺序

我得到如下数据,但未按排序顺序

Data which I am getting

最佳答案

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/

相关文章:

java - com.google.firebase.database.DatabaseException : Expected a Map while deserializing, 但得到了一个类 java.lang.Long

android - Firebase SignedURL 不等于下载 url 存储

javascript - 如何为 firebase 编写一个基于时间更改数据的云函数

ios - 使用值(forKey : String) gives an error

java - 在Android中写入NFC标签

java - 对 glGetString() 的静态调用在 Android 5.0 中返回 null

android - 如何获取按钮的背景颜色

android - 无法获取 GCM 配置文件

android - 如何将多个应用程序连接到firestore数据库

ios - 如何监听 Firebase 任务完成?