我正在尝试按列值将列表视图按降序排序。我尝试过使用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个下降的数据。请帮忙:(
答案 0 :(得分:1)
在添加每个子女孩子后,您才会撤消列表。这听起来并不像它最终将成为一个排序列表。
您可能不想使用ChildEventListener。使用ValueEventListener立即获取子项的 all ,然后在完成后对它们进行排序。
答案 1 :(得分:1)
Doug的方法的另一种方法是将每个孩子插入列表的开头,而不是像现在一样添加到列表的末尾。
例如,如果您的list
变量是List
,则可以在开头插入add(index, value)
:
list.add(0, new Booth(boothname, value));