2017-12-08 11 views
0

firebaseデータベースをセットアップしました。リストビューが自分のデータを昇順または降順で表示できるようにする方法が不思議でした。firebaseデータベースのデータを昇順または降順に並べるにはどうすればいいですか?

たとえば、最も高価なものがほしいと思ったら、私はlistViewの上部にあり、より安いものは底部にあります。

基本的に私はコストとランク別に2つの別々のリストビューを持つランキング活動を作成しようとしています。

Here's my database:

これは私が私のカウントに持っているものです。

@Override 
    protected void onStart() { 
     super.onStart(); 

     itemlists=new ArrayList<String>(); 
     databaseItems.child("items").addValueEventListener(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 

       for (DataSnapshot itemSnapShot : dataSnapshot.getChildren()) { 
        String itemname=itemSnapShot.child("itemName").getValue().toString(); 

        itemlists.add(itemname); 
        adapter = new ArrayAdapter(SearchActivity.this,android.R.layout.simple_list_item_1,itemlists); 
        listFinalCount.setAdapter(adapter); 

       } 

      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) { 

      } 
     }); 
    } 
+0

これは、1)文字列の代わりに数値として数字を格納する(今のように)2)Firebaseの結果を降順に取得する方法を読んでください(例:https://stackoverflow.com/questions/34156996/firebase-data-desc-sort-in-android) –

+0

私の思考プロセスはfirebaseから自分のデータを取得して他の人と比較してからlistviewで再配置していましたか? – somethingelse

答えて

0

あなたが値ではなく文字列として数字を使用する必要がFirebaseデータベースクエリの結果を注文したい場合。あなたのスクリーンショットに見られるように文字列を保持している場合は、文字列がlexicographicallyとなっており、これがあなたが探しているものではないことを知る必要があります。

データを昇順または降順で並べ替える最も簡単な方法は、クライアント側で行うことです。 Firebaseはデフォルトで指定されたプロパティによって昇順で結果を並べ替えることができます。 Firebaseには降順で注文する方法はありませんが、いくつか調整が可能です。

あなたは、データを表示するには、次のコードを使用することであろう最も簡単な方法をRecyclerViewを使用している場合:

LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity()); 
layoutManager.setReverseLayout(true); 
layoutManager.setStackFromEnd(true); 
recyclerView.setLayoutManager(layoutManager); 

このapprochは、あなたの順序が逆になります。

もう1つの方法は、FirebaseListAdapterを拡張し、getItem()メソッドをオーバーライドする独自のアダプタを作成することです。

もう1つのアプローチは、データベースからデータを取得し、Collectionに追加することです。Listは良い解決策になります。その後、Collections.reverse(yourList);を使用します。

関連する問題