我正在使用RecyclerView
在正在开发的Android应用程序上显示Firebase实时数据库中的列表。每个列表项都包含一个心率测量值,例如72,是进行测量的日期戳字符串和时间戳字符串。但是我想对同一天采集的所有心率进行分组和显示,就像消息应用程序显示在同一天发送和接收的消息的方式一样,如下所示
例如,我想在今天文本视图下显示今天所采集的所有心率,并在其各自的文本视图下显示其他日期的其他日期
以下是心率记录的示例:
"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"
}
}
答案 0 :(得分:1)
如果将时间戳记存储为字符串,则无法获得一致的结果。 This 是使用TIMESTAMP
将数据另存为ServerValue.TIMESTAMP
的方式。
要根据timestamp属性对项目进行排序,您应该使用如下查询:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
Query query = rootRef.child("patient's_heart_rate").child(uid).orderByChild("heartRateTimeStamp");
答案 1 :(得分:0)
在您的 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) {
}
});