Java 从升序到降序对firebase数据库编号进行排序

Java 从升序到降序对firebase数据库编号进行排序,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我知道Firebase中的所有数据都是按升序打印的 我正在尝试创建一个基于分数的排行榜,但不知道如何将排行榜按降序排列。有人能帮我吗 代码: database=FirebaseDatabase.getInstance().getReference().child(“用户”); listview=(listview)findViewById(R.id.排行榜); Collections.sort(排行榜列表,Collections.reverseOrder()); adapter=new Arra

我知道Firebase中的所有数据都是按升序打印的

我正在尝试创建一个基于分数的排行榜,但不知道如何将排行榜按降序排列。有人能帮我吗

代码:

database=FirebaseDatabase.getInstance().getReference().child(“用户”);
listview=(listview)findViewById(R.id.排行榜);
Collections.sort(排行榜列表,Collections.reverseOrder());
adapter=new ArrayAdapter(这是android.R.layout.simple\u list\u item\u 1,排行榜列表);
setAdapter(适配器);
queryqueryref=database.orderByChild(“score”).limitToLast(10);
addChildEventListener(新的ChildEventListener(){
@凌驾
公共void onChildaded(@NonNull DataSnapshot DataSnapshot,@null字符串s){
字符串user=dataSnapshot.getValue(user.class.toString();
排行榜列表。添加(用户);
adapter.notifyDataSetChanged();
}
});

我记得,Firebase数据的升序是正确的

您需要在应用程序中订购“排行榜列表”。收藏。反向(排行榜列表);这就是你要找的


添加子项后,需要将该项插入到正确的索引中

利用Java集合。试试这个。上面说Array.reverse()可以解决你的问题。使用
orderBy(“score”,Query.Direction.DESCENDING)
我试过了,但没有乐趣?我把它放在我声明数组适配器的地方之前。我相信你的问题是排序不会在更新时触发。虽然初始列表将被排序,但新元素不会遵循相同的排序规则。但是,您可能不希望在每次更新时对列表重新排序。您有一个已排序的列表,因此每次更新时都应该触发插入正确的索引。也许能帮你弄明白怎么做。
database = FirebaseDatabase.getInstance().getReference().child("Users");
listview = (ListView) findViewById(R.id.Leaderboard);
Collections.sort(leaderboardlist, Collections.reverseOrder());
adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1,leaderboardlist);

listview.setAdapter(adapter);

Query queryRef = database.orderByChild("score").limitToLast(10);
queryRef.addChildEventListener(new ChildEventListener() {
    @Override
    public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
        String user = dataSnapshot.getValue(User.class).toString();
        leaderboardlist.add(user);
        adapter.notifyDataSetChanged();
    }
});