【问题标题】:How to Sort List in Ascending Order by Firebase Childs in Android如何在 Android 中通过 Firebase Childs 按升序对列表进行排序
【发布时间】:2018-05-08 11:54:57
【问题描述】:
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 检索数据的代码。

下面是数据。

我想按升序但按点对数据进行排序。 最大点将首先出现。

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

【问题讨论】:

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


    【解决方案1】:

    试试这个,

    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) 用于数组列表。

    注意:使用整数代替字符串。

    【讨论】:

      【解决方案2】:

      试试这个

      Collections.sort(list, new Comparator<Model>() {
      @Override
      public int compare(Model lhs, Model rhs) {
          return lhs.getName().compareTo(rhs.getName());
      }});
      

      【讨论】:

      • 我想按点排序,而不是按名称排序,否则,它正在工作
      • 更改 lhs.getPoints().compareTo(rhs.getPoints());
      • 只比较第一个数字
      • 我已经修改了一些,但你的回答对我有帮助。
      【解决方案3】:
      Collections.sort(list, new Comparator<Model>() {
                          @Override
                          public int compare(Model lhs, Model rhs) {
                              return Integer.parseInt(rhs.getPoints()) - Integer.parseInt(lhs.getPoints());
                          }});
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-09-02
        • 2011-07-17
        • 2018-05-03
        • 2019-07-23
        • 2020-06-13
        • 1970-01-01
        • 2015-11-16
        相关资源
        最近更新 更多