Android 我正在使用Firebase实时数据库。。我想在Firebase上列出升序

Android 我正在使用Firebase实时数据库。。我想在Firebase上列出升序,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,根据字符串列表中的位数,我遇到了问题 我希望名为“分数”的字段从高到低排序,但例如,有10个用户,其中9个用户的分数为5位数,而1个用户的分数为6位数,因此,我希望较高的分数位于列表的顶部,如我前面所述,该列表有6位数字,但一旦分数达到6位,它将位于列表的末尾,该列表应位于顶部 我怎样才能解决这个问题 Query query = ref.child("Kullanıcılar").orderByChild("puan"); query.addValueEv

根据字符串列表中的位数,我遇到了问题

我希望名为“分数”的字段从高到低排序,但例如,有10个用户,其中9个用户的分数为5位数,而1个用户的分数为6位数,因此,我希望较高的分数位于列表的顶部,如我前面所述,该列表有6位数字,但一旦分数达到6位,它将位于列表的末尾,该列表应位于顶部

我怎样才能解决这个问题

Query query = ref.child("Kullanıcılar").orderByChild("puan");
query.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
        list.clear();
        for (DataSnapshot ds: dataSnapshot.getChildren())
        {
            i++;
            user = ds.getValue(User.class);
            list.add(i +" - "+ user.getIsim().toString() + " " + user.getPuan().toString());
            //list.add(user.getIsim().toString() + " " + user.getPuan().toString());
        }
        listView.setAdapter(adapter);
        Collections.reverse(list);
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {

    }
});
JSON:


由于您将分数存储为字符串,Firebase将根据它们的字典(字符串)值对它们进行排序。按字典顺序,“9”在“10”之后,因为“9”大于“1”。起初这似乎不合逻辑,但完全正确

建议的解决方案是将分数存储为数字:

{
  "Kullanıcılar": {
    "5bdhzNz3SlhzcCAYJaDpJyeppSx2": {
        "email": "egemenn1453@gmail.com",
        "id": "5bdhzNz3SlhzcCAYJaDpJyeppSx2"
        "isim": "egemen"
        "puan": 24000
    },
    "7iJJxUswPPhkLXfm6LNHNCCRSeJ3": {
        "email": "kalantolga@hotmail.com",
        "id": "7iJJxUswPPhkLXfm6LNHNCCRSeJ3",
        "isim": "falanfilan",
        "puan": 25000
    },
    "JoSwIRjzrxTHTz7CXaiQLAjQMCZ2": {
        "email": "terketyaman160@gmail.com",
        "id": "JoSwIRjzrxTHTz7CXaiQLAjQMCZ2"
        "isim": "fropsello",
        "puan": 56525
    }
}

现在节点是数字的,并且将被正确排序,因为
10
9
以数字排序顺序。

由于您将分数存储为字符串,Firebase将根据它们的字典(字符串)值对它们进行排序。按字典顺序,“9”在“10”之后,因为“9”大于“1”。起初这似乎不合逻辑,但完全正确

建议的解决方案是将分数存储为数字:

{
  "Kullanıcılar": {
    "5bdhzNz3SlhzcCAYJaDpJyeppSx2": {
        "email": "egemenn1453@gmail.com",
        "id": "5bdhzNz3SlhzcCAYJaDpJyeppSx2"
        "isim": "egemen"
        "puan": 24000
    },
    "7iJJxUswPPhkLXfm6LNHNCCRSeJ3": {
        "email": "kalantolga@hotmail.com",
        "id": "7iJJxUswPPhkLXfm6LNHNCCRSeJ3",
        "isim": "falanfilan",
        "puan": 25000
    },
    "JoSwIRjzrxTHTz7CXaiQLAjQMCZ2": {
        "email": "terketyaman160@gmail.com",
        "id": "JoSwIRjzrxTHTz7CXaiQLAjQMCZ2"
        "isim": "fropsello",
        "puan": 56525
    }
}

现在节点是数字的,并且将正确排序,因为
10
9
以数字排序顺序。

听起来像是将分数存储为字符串,而不是数字。您能否在
ref.child(“Kullanıcılar”)
中编辑您的问题以包含JSON(作为文本,无屏幕截图)?您可以通过单击溢出菜单中的“导出JSON”链接来实现这一点(⠇) 在你的问题上。我怎么做?我不知道。你能帮我吗?我想帮你,但需要看看你的JSON。我已经解释了如何获取JSON,和你上一个问题一样。然后你可以通过点击它下面的
编辑
链接将它添加到你的问题中。“Kullanıcılar”:{“5bdhzz3slhzccayjadpjyeppsx2”:{“电子邮件”:"egemenn1453@gmail.com,id:“5BDHZNZ3SLHZCCAYJADPJYEPSH2”“isim:“egemen”“puan:“24000”},“7IJJXUSWPHKLXFM6LNHNCCRSEJ3:{“电子邮件”:”kalantolga@hotmail.com“,”id“:”7IJJXUSWPHKLXFM6LNNCCRSEJ3“,”isim“:”法兰菲兰“,”普安“:”25000“,”JoSwIRjzrxTHTz7CXaiQLAjQMCZ2:{“电子邮件”:terketyaman160@gmail.com,“id”:“JoSwIRjzrxTHTz7CXaiQLAjQMCZ2”“isim”:“fropsello”,“puan”:“56525”},听起来像是将分数存储为字符串,而不是数字。你能在
ref.child(“Kullanıcılar”)中编辑你的问题以包含JSON吗
(以文本形式,无屏幕截图)?您可以通过单击溢出菜单中的“导出JSON”链接获得此信息(⠇) 在你的问题上。我怎么做?我不知道。你能帮我吗?我正试图帮助你,但需要看看你的JSON。我已经解释了如何获取JSON,和你上一个问题一样。你可以通过点击它下面的
编辑
链接将它添加到你的问题中。“Kullanıcılar”:{“5bdhzz3slhzccayjadpjyeppsx2”:{“电子邮件”:egemenn1453@gmail.com,id:“5BDHZNZ3SLHZCCAYJADPJYEPSH2”“isim:“egemen”“puan:“24000”},“7IJJXUSWPHKLXFM6LNHNCCRSEJ3:{“电子邮件”:”kalantolga@hotmail.com“,”id“:”7IJJXUSWPHKLXFM6LNNCCRSEJ3“,”isim“:”法兰菲兰“,”普安“:”25000“,”JoSwIRjzrxTHTz7CXaiQLAjQMCZ2:{“电子邮件”:terketyaman160@gmail.com,“id”:“JoSwIRjzrxTHTz7CXaiQLAjQMCZ2”“isim”:“fropsello”,“puan”:“56525”},我理解..在Android Studio中如何使用代码?如果您将数据库中的分数更改为数字,则不必更改代码。我理解..在Android Studio中如何使用代码?如果您将数据库中的分数更改为数字,则不必更改代码。