如何按Android中的Firebase Childs按升序排序列表

时间:2017-11-24 12:53:00

标签: android list arraylist firebase-realtime-database android-recyclerview

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检索数据的代码。

以下是数据。

enter image description here

我想按升序对数据进行排序,但要按点进行排序。 最高点将是第一个。

任何人都可以帮助我吗?感谢。

3 个答案:

答案 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());
                    }});

问题是它在字符串中我正在比较字符串,所以我先将其转换为整数然后进行比较。