如何根据我的 Firebase 实时数据库中的统计信息创建排行榜?
How do I create a leaderboard from the stats in my Firebase Realtime Database?
我想在我的应用程序中创建排行榜。排行榜应显示得分最高的 10 个最佳用户。我的 Firebase 数据库如下所示:
Firebase 数据库:
我已经创建了一个 activity,其中有 10 个 TextView,一个接一个。从第一个 TextView 开始,我想将文本更改为:
“第一名 | 'username' | 'highscore' 得分”
现在我的问题是:
对我来说最简单的方法是什么?
要获得得分最高的前 10 个用户,您可以使用这样的查询:
DatabaseReference usersRef = FirebaseDatabase.getInstance().getReference("Users");
Query top10Query = usersRef.orderByChild("highscore").limitToLast(10);
然后用这样的方式读取匹配数据:
top10Query.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot userSnapshot: dataSnapshot.getChildren()) {
Log.i("Firebase", userSnapshot.getKey());
Log.i("Firebase", userSnapshot.child("highscore").getValue());
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException();
}
}
以上将为您提供前 10 个分数,但按升序排列,因为 Firebase 无法选择 return 结果按降序排列。要以正确的顺序显示它们,您需要在代码中反转结果,或以相反的顺序将它们添加到 UI。
我想在我的应用程序中创建排行榜。排行榜应显示得分最高的 10 个最佳用户。我的 Firebase 数据库如下所示:
Firebase 数据库:
我已经创建了一个 activity,其中有 10 个 TextView,一个接一个。从第一个 TextView 开始,我想将文本更改为:
“第一名 | 'username' | 'highscore' 得分”
现在我的问题是:
对我来说最简单的方法是什么?
要获得得分最高的前 10 个用户,您可以使用这样的查询:
DatabaseReference usersRef = FirebaseDatabase.getInstance().getReference("Users");
Query top10Query = usersRef.orderByChild("highscore").limitToLast(10);
然后用这样的方式读取匹配数据:
top10Query.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot userSnapshot: dataSnapshot.getChildren()) {
Log.i("Firebase", userSnapshot.getKey());
Log.i("Firebase", userSnapshot.child("highscore").getValue());
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException();
}
}
以上将为您提供前 10 个分数,但按升序排列,因为 Firebase 无法选择 return 结果按降序排列。要以正确的顺序显示它们,您需要在代码中反转结果,或以相反的顺序将它们添加到 UI。