像 Android 中的聊天应用程序一样按日期对 Firebase 列表项进行排序和排序

我正在使用 aRecyclerView在我正在开发的 Android 应用程序上显示来自我的 Firebase 实时数据库的列表。每个列表项由心率测量值(例如 72)、日期戳字符串和测量时间的时间戳字符串组成。但是,我想对同一天的所有心率进行分组和显示,就像消息应用程序显示在同一天发送和接收的消息的方式一样,如下所示

http://img3.mukewang.com/60eebd4b00015f9504790799.jpg

例如,我想在今天的文本视图下显示今天拍摄的所有心率,在带有日期的相应文本视图下显示其他日子的心率


以下是心率记录的示例:


"patient's_heart_rate" : {

"HdFZE8Y37DfhTb7RaXBIuvusTzn2" : {

  "-LJ0a-p7KTgyagR22HZQ" : {

    "heartRate" : "128\r",

    "heartRateDate" : "04-08-2018",

    "heartRateId" : "-LJ0a-p6SblappQIsyr0",

    "heartRateTimeStamp" : "00:01:06"

  },

  "-LJ0a0271S6LWEDaDiAL" : {

    "heartRate" : "\u00007\u0000\u00006\r",

    "heartRateDate" : "04-08-2018",

    "heartRateId" : "-LJ0a0271S6LWEDaDiAK",

    "heartRateTimeStamp" : "00:01:06"

  }

}


白衣非少年
浏览 189回答 2
2回答

慕桂英4014372

如果将时间戳存储为字符串,则无法获得一致的结果。这是您如何将数据保存为TIMESTAMPusing ServerValue.TIMESTAMP.要根据时间戳属性对您的项目进行排序,您应该使用如下所示的查询:DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();Query query = rootRef.child("patient's_heart_rate").child(uid).orderByChild("heartRateTimeStamp");

蓝山帝景

在您的firebase 中,您的模型被添加到一个节点中。从中,您可以通过按时间戳排序来检索它们。   database.orderByChild("timestamp").                    .addChildEventListener(new ChildEventListener() {        @Override        public void onChildAdded(DataSnapshot dataSnapshot, String s) {        }        @Override        public void onChildChanged(DataSnapshot dataSnapshot, String s) {            // adapter.notifyDataSetChanged();        }        @Override        public void onChildRemoved(DataSnapshot dataSnapshot) {        }        @Override        public void onChildMoved(DataSnapshot dataSnapshot, String s) {        }        @Override        public void onCancelled(DatabaseError databaseError) {        }    });
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java