1

根据字符串列表中的位数,我遇到了麻烦..

我希望名为“score”的字段从高到低排序,但例如,有 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:

{
  "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"
    }
}
4

1 回答 1

0

由于您将分数存储为字符串,因此 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以数字排序顺序。

于 2020-06-21T20:08:11.253 回答