Firebase按降序排序数据。 (只有一半排序。)

时间:2017-12-07 02:53:14

标签: android firebase arraylist firebase-realtime-database

我正在尝试按列值将列表视图按降序排序。我尝试过使用Collections.reverse(list);但我不知道为什么只有一半的列表被分类为降序。下半部分按升序排列。

以下是我的代码:

com.firebase.client.Query Queryref = mRef.orderByValue().limitToLast(20);
Queryref.addChildEventListener(new com.firebase.client.ChildEventListener() {
    @Override
    public void onChildAdded(com.firebase.client.DataSnapshot dataSnapshot, String s) {
        String value = dataSnapshot.getValue(String.class);
        String boothname = dataSnapshot.getKey();
        list.add(new Booth(boothname, value));
        adapter.notifyDataSetChanged();

        Collections.reverse(list);
    }

上面的代码允许我以升序显示前20个最高值。 但我希望它在降序并尝试使用Collections.reverse(); 但是我收到的输出只显示了前10个下降的数据。请帮忙:(

2 个答案:

答案 0 :(得分:1)

添加每个子女孩子后,您才会撤消列表。这听起来并不像它最终将成为一个排序列表。

您可能不想使用ChildEventListener。使用ValueEventListener立即获取子项的 all ,然后在完成后对它们进行排序。

答案 1 :(得分:1)

Doug的方法的另一种方法是将每个孩子插入列表的开头,而不是像现在一样添加到列表的末尾。

例如,如果您的list变量是List,则可以在开头插入add(index, value)

list.add(0, new Booth(boothname, value));