Warm tip: This article is reproduced from serverfault.com, please click

android-OrderByChild()未对我的Firebase数据进行排序

(android - OrderByChild() is not sorting my firebase data)

发布于 2019-09-19 11:47:20

我是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());

在这里我获得价值不是按关键顺序

我正在获取如下所示的未按排序顺序排列的数据

我得到的数据

Questioner
Rocky Jems
Viewed
11
Frank van Puffelen 2019-09-19 19:57:16

Map根据定义,a中的数据未排序。因此,当你调用时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()
    }
  }
  ...