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);
}
Adapter recyclerview = new Adapter(list, getActivity());
RecyclerView.LayoutManager layoutmanager = new LinearLayoutManager(getActivity());
recycler.setLayoutManager(layoutmanager);
recycler.setItemAnimator( new DefaultItemAnimator());
recycler.setAdapter(recyclerview);
}
这是我用来从firebase检索数据的代码。
以下是数据。
我想按升序对数据进行排序,但要按点进行排序。 最高点将是第一个。
任何人都可以帮助我吗?感谢。
答案 0 :(得分:4)
试试这个,
public class Model implements Comparable<Model> {
@Override
public int compareTo(@NonNull Model model) {
String points= model.getPoints();
return this.points.compareTo(model);
}
}
并使用Collections.sort(list)
作为数组列表。
注意:使用整数作为点值而不是字符串。
答案 1 :(得分:1)
试试这个
Collections.sort(list, new Comparator<Model>() {
@Override
public int compare(Model lhs, Model rhs) {
return lhs.getName().compareTo(rhs.getName());
}});
答案 2 :(得分:0)
Collections.sort(list, new Comparator<Model>() {
@Override
public int compare(Model lhs, Model rhs) {
return Integer.parseInt(rhs.getPoints()) - Integer.parseInt(lhs.getPoints());
}});
问题是它在字符串中我正在比较字符串,所以我先将其转换为整数然后进行比较。