ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
list = new ArrayList<>();
for(DataSnapshot dataSnapshot1 :dataSnapshot.getChildren()){
Model userdetails = dataSnapshot1.getValue(Model.class);
Model listdata = new Model();
String name = userdetails.getName();
String points = userdetails.getPoints();
listdata.setName(name);
listdata.setPoints(points);
list.add(listdata);
}
try {
Collections.sort(list, new Comparator<Model>() {
@Override
public int compare(Model lhs, Model rhs) {
int left = Integer.parseInt(rhs.getPoints());
int right = Integer.parseInt(lhs.getPoints());
return left - right;
}
});
} catch (Exception ignored){}
Adapter recyclerview = new Adapter(list, getActivity());
RecyclerView.LayoutManager layoutmanager = new LinearLayoutManager(getActivity());
recycler.setLayoutManager(layoutmanager);
recycler.setItemAnimator( new DefaultItemAnimator());
recycler.setAdapter(recyclerview);
}
这是我用来从firebase检索数据的代码。
以下是数据。
我想按升序对数据进行排序,但要按点进行排序。最大值 这一点将在第一时间开始。
我已经发布了一个关于它的问题并且它完成了诀窍,列表已经排序但是在一些项目之后它变得没有排序。
和重要的事情是列表非常非常大。
我会告诉你一个例子:
分类后,以及某些项目随后被取消。
任何人都可以帮助我吗?感谢。
答案 0 :(得分:0)
尝试这个
Collections.sort(list, new Comparator<Model>() {
@Override
public int compare(Model lhs, Model rhs) {
int left = Integer.parseInt(rhs.getPoints());
int right = Integer.parseInt(lhs.getPoints());
return left - right;
}
});
替换为
Collections.sort(list, new Comparator<Model>() {
@Override
public int compare(Model o1, Model o2) {
return Integer.compare(o2.getPoints(), o1.getPoints());
}
});
<强>更新强>
Collections.sort(list, new Comparator<Model>() {
@Override
public int compare(Model o1, Model o2) {
return Integer.compare(Integer.parseInt(o2.getPoints()), Integer.parseInt(o1.getPoints()));
}
});
请设置例外,请参阅以下代码:设置断点并检查是否有火灾
try {
Collections.sort(list, new Comparator<Model>() {
@Override
public int compare(Model o1, Model o2) {
return Integer.compare(Integer.parseInt(o2.getPoints()), Integer.parseInt(o1.getPoints()));
}
});
} catch (Exception ignored){
ignored.getStackTrace();
}