如何按Firebase Childs(数字)按升序排序列表?

时间:2017-12-07 08:21:25

标签: 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);

                }

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

以下是数据。

enter image description here

  

我想按升序对数据进行排序,但要按点进行排序。最大值   这一点将在第一时间开始。

我已经发布了一个关于它的问题并且它完成了诀窍,列表已经排序但是在一些项目之后它变得没有排序。

和重要的事情是列表非常非常大。

我会告诉你一个例子:

enter image description here

分类后,以及某些项目随后被取消。

enter image description here

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

1 个答案:

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