Firebase 按降序对数据进行排序。 (只排序了一半。)
Posted
技术标签:
【中文标题】Firebase 按降序对数据进行排序。 (只排序了一半。)【英文标题】:Firebase sorting data in descending order. (only half sorted.) 【发布时间】:2018-05-21 01:47:16 【问题描述】:我正在尝试按值将我的列表视图排序为降序。我试过使用 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 个降序数据。请帮忙:(
【问题讨论】:
【参考方案1】:Doug 方法的另一种方法是将每个子项插入到列表的开头,而不是像现在这样添加到列表的末尾。
例如,如果您的list
变量是List
,您可以在开头插入add(index, value)
:
list.add(0, new Booth(boothname, value));
【讨论】:
【参考方案2】:在将每个 个子单独的子添加到列表后,您正在反转列表。这听起来根本不像最终会是一个排序列表。
您可能不想使用 ChildEventListener。使用 ValueEventListener 一次获取 所有 个子项,然后在完成后对它们进行排序。
【讨论】:
但我需要使用 ChildEventListener 因为子数据会不断变化。这是针对每次用户投票时子值都会改变的投票结果。所以列表必须根据子值按降序排列。 那么你需要手动对每个事件的整个列表进行排序。以上是关于Firebase 按降序对数据进行排序。 (只排序了一半。)的主要内容,如果未能解决你的问题,请参考以下文章