Android 如何按Firebase Childs(数字)按升序对列表排序? ref.addValueEventListener(新的ValueEventListener(){ @凌驾 公共void onDataChange(DataSnapshot DataSnapshot){ 列表=新的ArrayList(); 对于(DataSnapshot dataSnapshot1:DataSnapshot.getChildren()){ Model userdetails=dataSnapshot1.getValue(Model.class); 模型listdata=新模型(); String name=userdetails.getName(); String points=userdetails.getPoints(); listdata.setName(name); listdata.设定点(点); list.add(listdata); } 试一试{ Collections.sort(list,newcomparator(){ @凌驾 公共整数比较(lhs型、rhs型){ int left=Integer.parseInt(rhs.getPoints()); int right=Integer.parseInt(lhs.getPoints()); 返回左-右; } }); }捕获(忽略异常){} Adapter recyclerview=新适配器(列表,getActivity()); RecyclerView.LayoutManager LayoutManager=新的LinearLayoutManager(getActivity()); 回收器。setLayoutManager(layoutmanager); setItemAnimator(新的DefaultItemAnimator()); recycler.setAdapter(recyclerview); }
这是我用来从firebase检索数据的代码 下面是数据 我想按升序对数据进行排序,但要按点进行排序。最大值 重点将在第一位 我已经发布了一个关于它的问题,它成功了,列表被排序了,但在一些项目之后,它变得不排序 最重要的是名单非常大 我将向您展示一个示例: 排序后,某些项目稍后将变为未排序 有人能帮我吗?谢谢。试试这个Android 如何按Firebase Childs(数字)按升序对列表排序? ref.addValueEventListener(新的ValueEventListener(){ @凌驾 公共void onDataChange(DataSnapshot DataSnapshot){ 列表=新的ArrayList(); 对于(DataSnapshot dataSnapshot1:DataSnapshot.getChildren()){ Model userdetails=dataSnapshot1.getValue(Model.class); 模型listdata=新模型(); String name=userdetails.getName(); String points=userdetails.getPoints(); listdata.setName(name); listdata.设定点(点); list.add(listdata); } 试一试{ Collections.sort(list,newcomparator(){ @凌驾 公共整数比较(lhs型、rhs型){ int left=Integer.parseInt(rhs.getPoints()); int right=Integer.parseInt(lhs.getPoints()); 返回左-右; } }); }捕获(忽略异常){} Adapter recyclerview=新适配器(列表,getActivity()); RecyclerView.LayoutManager LayoutManager=新的LinearLayoutManager(getActivity()); 回收器。setLayoutManager(layoutmanager); setItemAnimator(新的DefaultItemAnimator()); recycler.setAdapter(recyclerview); },android,list,arraylist,firebase-realtime-database,android-recyclerview,Android,List,Arraylist,Firebase Realtime Database,Android Recyclerview,这是我用来从firebase检索数据的代码 下面是数据 我想按升序对数据进行排序,但要按点进行排序。最大值 重点将在第一位 我已经发布了一个关于它的问题,它成功了,列表被排序了,但在一些项目之后,它变得不排序 最重要的是名单非常大 我将向您展示一个示例: 排序后,某些项目稍后将变为未排序 有人能帮我吗?谢谢。试试这个 ref.addValueEventListener(new ValueEventListener() { @Override
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);
}
Collections.sort(列表,新比较器(){
@凌驾
公共整数比较(lhs型、rhs型){
int left=Integer.parseInt(rhs.getPoints());
int right=Integer.parseInt(lhs.getPoints());
返回左-右;
}
});
替换为此
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(列表,新比较器(){
@凌驾
公共整数比较(o1型、o2型){
返回整数.compare(o2.getPoints(),o1.getPoints());
}
});
更新:
Collections.sort(list, new Comparator<Model>() {
@Override
public int compare(Model o1, Model o2) {
return Integer.compare(o2.getPoints(), o1.getPoints());
}
});
Collections.sort(列表,新比较器(){
@凌驾
公共整数比较(o1型、o2型){
返回Integer.compare(Integer.parseInt(o2.getPoints()),Integer.parseInt(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()));
}
});
试试看{
Collections.sort(list,newcomparator(){
@凌驾
公共整数比较(o1型、o2型){
返回Integer.compare(Integer.parseInt(o2.getPoints()),Integer.parseInt(o1.getPoints());
}
});
}捕获(忽略异常){
忽略。getStackTrace();
}
我认为您的点变量是字符串。请查看我的更新答案仍然相同。此代码被赋予异常或不检查我的更新答案没有任何更改。
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();
}