-1
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からデータを取得するために使用しているコードです。Firebaseチャイルド(数字)で昇順にソートする方法は?

以下がデータです。

enter image description here

私は昇順ではなくポイントでデータをソートします。最大 ポイントが最初に表示されます。

私はすでにそれについての質問を投稿していますが、そのリストはソートされていますが、いくつかの項目の後にはソートされません。

とPOST重要なことはリストが非常に大きいことです。

私はあなたの例を紹介します:

SORTED AFTER

enter image description here

、および一部ITEMS後にはUNSORTEDになります。

enter image description here

誰もが私を助けることができますか?ありがとう。

答えて

0

すると、この

Collections.sort(list, new Comparator<Model>() { 
       @Override 
     public int compare(Model o1, Model o2) { 
       return Integer.compare(o2.getPoints(), o1.getPoints()); 
    } 
}); 

に置き換え、この1

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(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(); 
    } 
+0

が動作していないが、まだ同じ結果が:( –

+0

あなたのポイントは、「文字列」または「INT」に戻ってきていますか? – Saif

+0

私はあなたのポイントvarは文字列だと思う私の更新された回答を参照してください – Saif

関連する問題