Mar*_*ina 4 java android hashmap firebase firebase-realtime-database
Java 编程新手,无法找到答案。
我为我构建的一个小游戏创建了一个 Firebase 数据库,并设法使分数正确存储。现在我想建立排名前十的排行榜。数据库本身由最高分索引,我得到了前 10 名的分数:
mDatabase.child(gameName).child("Score").limitToFirst(10).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// Get user value
HashMap<String,Long> topScores = (HashMap<String, Long>) dataSnapshot.getValue();
....
Run Code Online (Sandbox Code Playgroud)
问题在于(从我所见)我收到的是一个 HashMap,我将其存储在 topScores 中。同样,根据我目前的理解,HashMaps 是无组织的,所以当你打印它时,它看起来像这样:
{DummyData1=0, try=0, dummy2=5, lalala=10, Name1=0, try2=0, lala=11, try3=0, la=3, dummy=1}
Run Code Online (Sandbox Code Playgroud)
所以,没有明显的顺序。
最后,问题是您建议我如何对创建的 HashMap 进行排序,以便将 Key 和 Value 对存储在其相应的 TextView 中(TextView 第一行中的最高分和最高分,依此类推)。
谢谢!
你做错了两件事:
假设您有以下 JSON 结构Score(下次提问时请将 JSON 作为文本发布):
Score
Run Code Online (Sandbox Code Playgroud)
代码将是:
mDatabase.child(gameName).child("Score")
.orderByValue().limitToLast(10).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot child: dataSnapshot.getChildren()) {
System.out.println(child.getKey()+"="+child.getValue(Long.class));
}
Run Code Online (Sandbox Code Playgroud)
它会打印:
粉扑=30
北极熊0106=42
加藤武夫=60
| 归档时间: |
|
| 查看次数: |
1454 次 |
| 最近记录: |