【发布时间】:2017-02-25 19:04:35
【问题描述】:
嘿,我想按升序对存储在 firebase 数据库中的时间进行排序,并将其显示在列表中。我找到了有关排序整数值的解决方案。
这是我的数据库,我想根据每个用户 ID 在该特定问题 ID 处的 timeTaken 进行排序。 编辑: 所以我的问题是如何从每个用户 uid 中检索该 question id(此处为:982906)所花费的特定时间的数据并对该列表进行排序以检索谁在最短的时间内解决了问题.
private void getTimeTaken() {
DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference().child("users");
Query query = databaseReference.orderByChild("questions").startAt("982906");
query.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
yourTimeArraylist = new ArrayList<>();
for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
UserPuzzleDetails userPuzzleDetails = postSnapshot.getValue(UserPuzzleDetails.class);
yourTimeArraylist.add(new UserPuzzleDetails(userPuzzleDetails.getYourAnswer(), userPuzzleDetails.getAnswerScore(), userPuzzleDetails.getTimeTaken()));
Log.e("", " " + userPuzzleDetails.getTimeTaken());
}
for (int i = 0; i < yourTimeArraylist.size(); i++) {
UserPuzzleDetails user = yourTimeArraylist.get(i);
Log.d("test your rank", " onDataChange: " + user.getTimeTaken() + " " + user.getAnswerScore());
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
我已将数据库中的时间值更改为 int,以毫秒为单位,但我无法理解如何根据所用时间对问题 id 982906 的值进行排序。我试过上面的方法,每次都返回0。
【问题讨论】:
-
看起来您的时间已经可以排序了。您在实施时遇到问题吗?如果有,请分享minimal code that reproduces the problem。
-
如果将时间和持续时间等内容存储为整数值而不是显示文本字符串会容易得多。它将使排序更简单。然后,当您需要显示时间时,在客户端使用整数值对其进行格式化。
-
@FrankvanPuffelen 我添加了一些代码。它返回空值。请检查
-
@DougStevenson 谢谢,这是有道理的,所以我已将值更改为整数类型,但仍然面临一些问题
标签: java android firebase firebase-realtime-database