如何根据我的 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。