我想在我的应用程序中创建一个领导板。主板应该显示10个最好的用户谁得分最高。我的Firebase数据库如下所示:
火基数据库:
我已经创建了一个活动,在另一个下面有10个TextViews。从第一个TextView开始,我想将文本更改为:
“第一名,‘用户名’,‘高分数’分数”
现在我的问题是:
我做这件事最简单的方法是什么?
发布于 2022-02-06 15:55:28
要获得得分最高的前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没有选择按降序返回结果。要以正确的顺序显示它们,您需要在代码中反转结果,或者以相反的顺序将它们添加到UI中。
https://stackoverflow.com/questions/71008765
复制相似问题