2017-03-27 9 views
0

私は子供の注文を使ってlistViewにデータを表示し、データは降順で表示されます。Androidクライアント側で昇順に並べ替えるにはどうしたらいいですか?Firebaseデータベースで昇順でデータをソートする方法は?

ref.orderByChild("date_creation").limitToFirst(10).addValueEventListener(new ValueEventListener() { 

//date_creation is the date when user add Book "dd-MM-yyyy_HH:mm:ss" 
       @Override 
       public void onDataChange(DataSnapshot dataSnapshot) { 


        for (DataSnapshot dataSnap : dataSnapshot.getChildren()) { 

         Book valueBook = dataSnap.getValue(Book.class); 
         String titreLivreToDisplay = valueBook.getNom_livre(); 
         String descLivreToDisplay = valueBook.getDesc_livre(); 
         String prixLivreToDisplay = valueBook.getPrix_livre(); 
         String timeToDisplay = valueBook.getDate_creation(); 
         String filePathToDiplay = valueBook.getChemin_image(); 
         String villeToDisplay = valueBook.getVille_livre(); 
         String typeAnnToDisplat = valueBook.getType_annonce_selected(); 

         item = new Book(); 

         item.setNom_livre(titreLivreToDisplay); 
         item.setDesc_livre(descLivreToDisplay); 
         item.setPrix_livre(prixLivreToDisplay); 
         item.setDate_creation(timeToDisplay); 
         item.setChemin_image(filePathToDiplay); 
         item.setVille_livre(villeToDisplay); 
         item.setType_annonce_selected(typeAnnToDisplat); 


         feedItems.add(item); 


        } 


        listAdapter = new FeedListAdapter(AccueilActivity.this, feedItems); 

        listView.setAdapter(listAdapter); 
        listAdapter.notifyDataSetChanged(); 


       } 

私はデータベースから取得したデータを並べ替えるためにArraylistコレクションを使用します。

List<String> list = new ArrayList<String>(); 
        for (DataSnapshot dataSnap : dataSnapshot.getChildren()) { 

         Book valueBook = dataSnap.getValue(Book.class); 

         String titreLivreToDisplay = valueBook.getNom_livre(); 
         String descLivreToDisplay = valueBook.getDesc_livre(); 
         String prixLivreToDisplay = valueBook.getPrix_livre(); 
         String timeToDisplay = valueBook.getDate_creation(); 
         String filePathToDiplay = valueBook.getChemin_image(); 
         String villeToDisplay = valueBook.getVille_livre(); 
         String typeAnnToDisplat = valueBook.getType_annonce_selected(); 

         list.add(titreLivreToDisplay); 
         list.add(descLivreToDisplay); 
         list.add(prixLivreToDisplay); 
         list.add(timeToDisplay); 
         list.add(filePathToDiplay); 
         list.add(villeToDisplay); 
         list.add(typeAnnToDisplat); 
Collections.sort(list); 

これを実装する方法はわかりません。このコレクションはどのように使用できますか?どのようにfeedItemsをフィードにリストを使用するには?

答えて

2

あなたの説明から、あなたのリストの順序を逆にしたいだけです。 これはコンパレータを使って簡単に行うことができます。

// Defining the comparator 
Comparator compare = Collections.reverseOrder(); 

// Sorting the list taking into account the comparator 
Collections.sort(list, compare); 

このコードはあなたのリストを逆順にする必要があります。 ご希望の場合は、逆の注文段階に関する詳細情報をご提供ください。

+0

私feedItemsはブック 'リスト feedItemsは=新しいArrayListを()のリストであります;'私の他のリストは文字列リストです。リスト list = new ArrayList (); 'リストを使用してfeedItemsをフィードする方法は? – Amal

+0

@Amal Bookクラスの新しいコンストラクタ 'item = new Book();'をインスタンス化して、 'list'の項目をコンストラクタに追加するだけです。最後に、その項目を 'feedItems' ArrayList' feedItems.add(item); 'に追加してください。 期待どおりでない場合は、問題の詳細をお知らせください。 – iMAD

+0

私はこのエラーがあります: 'java.lang.ClassCastException:com.mydreambook.model.Bookはjava.util.Collectionsでjava.lang.Comparableにキャストできません$ ReverseComparator.compare(Collections.java:192)'コレクション ' .sort(feedItems、compare); ' – Amal

0

私は解決策はちょうど私が持っていたことを順序を逆にするコレクションを使用して、昇順にソートされたデータが欲しい:

Collections.reverse(feedItems); 
関連する問題