我从RecyclerView中的firebase数据库中获取一些记录。我已经根据特定的键值获取数据。现在我想要为格式为MM-dd-yyyy的日期键对数据进行排序。我怎么排序呢?我的代码来获取它:
FirebaseRecyclerAdapter<Eventsdata,Eventshistory.Game> adapter=new FirebaseRecyclerAdapter<Eventsdata,Eventshistory.Game>(Eventsdata.class
,R.layout.eventshistoryrow
,Eventshistory.Game.class
,reference.child("Events").orderByChild("uid").equalTo(mAuth.getCurrentUser().getUid())
)
我在这里根据uid获取记录,但我希望它按日期排序。
答案 0 :(得分:0)
您需要修改模型。使用yyyy-mm-dd或使用UTC时间戳。 mm-dd-yyyy对于任何类型的自然分选都是完全没用的。
此外,您似乎必须实施自己的回收器适配器,手动获取数据,然后根据日期对其进行排序。这是因为firebase仅允许对一个子节点进行查询,这是您案例中的userID。所以你不能得到像“用户ID是这个用户ID,然后按日期排序”的数据
答案 1 :(得分:0)
如果我做对了,你会尝试根据添加的时间检索数据。
可能的解决方案
在添加(事件)数据的方法中,您还可以在每个事件ID中添加一个名为timestamp的新子项。
//to get a time stamp you do this
ServerValue.TIMESTAMP
所以这就是你添加数据的方式
//if you use Map to add data, do this
Map map=new HashMap();
map.put("eventID", event_id);
map.put("gameFee", "200");
//here you add timestamp
map.put("timestamp", ServerValue.TIMESTAMP);
..........
......
所以现在每个事件id都有自己的时间戳。
现在您根据时间戳查询。
所以不要那样查询:
reference.child("Events").orderByChild("uid").equalTo(mAuth.getCurrentUser().getUid();
这样做:
reference.child("Events").orderByChild("timestamp");
您将根据发布日期检索数据。