2017-04-26 13 views
0

Firebaseデータベースを使用しています。私の「ユーザー」データは次のようになります。FirebaseのデータをListViewの降順で表示します。

Users { 
    "38NFjDwCPAdkdvbzLb1VkFeaBIV2" : { 
    "points" : 10, 
    "userEmail" : "[email protected]", 
    "userName" : "Tom" 
    }, 
    "pH3HWzu9SVbW56jwqCb55hHryAD2" : { 
    "points" : 17, 
    "userEmail" : "[email protected]", 
    "userName" : "Jerry" 
    } 
} 

ここで、ポイントに応じて降順でユーザーを表示します。私はorderByChild("points")を使うことができますが、リストは昇順でしか表示されません。

これは私が今やっていることです:

public class Leaderboards extends AppCompatActivity { 

    private ListView leaderboardsList; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_leaderboards); 

     leaderboardsList = (ListView) findViewById(R.id.leaderboardList); 

     DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); 

     DatabaseReference userRef = rootRef.child("Users"); 

     DatabaseReference carsRef = rootRef.child("Card"); 
     Query qUserRef = userRef.orderByChild("points"); 

     FirebaseListAdapter<User_DB> firebaseListAdapter = new FirebaseListAdapter<User_DB>(this, User_DB.class, android.R.layout.simple_list_item_1, qUserRef) { 
      @Override 
      protected void populateView(View v, User_DB model, int position) { 

       String points = String.valueOf(model.getPoints()); 
       ((TextView)v.findViewById(android.R.id.text1)).setText(points); 

      } 
     }; 

     leaderboardsList.setAdapter(firebaseListAdapter); 
    } 

} 

私は、各ユーザのポイントに応じて、降順で私のリストを表示するために、上記のコードにどのような変更を加えていますか?

+0

降順で結果を取得する組み込みの方法はありません。一般的な解決策は、反転値(すなわち、negativeScore)を持つ余分な特性を維持するか、または反転クライアント側を行うことである(リストがモバイルデバイス上に表示される場合、決してそれほど長くするべきではない)。 http://stackoverflow.com/questions/34156996/firebase-data-desc-sorting-in-android –

+0

アイデアのおかげでね。ネガティブなスコアで別のアトリビュートを作ることについてあなたが言ったことをやり遂げようとします。 –

答えて

-1

データごとに優先度を設定し、orderByPriority機能を使用する必要があります。
Firebaseではソートの降順または昇順を設定できません。

+0

'orderByChild'についてはどうですか? –

+0

'orderByChild'は常に昇順でソートされます。 – wakwak3125

+0

'orderByKey'、' orderByValue'、 'orderByChild'、または' orderByPriority() 'に関係なく、Firebaseのすべての順序は昇順です。 https://firebase.google.com/docs/database/android/lists-of-data#data-orderをご覧ください。 'orderByPriority()'をもう使用する理由はありません。 http://stackoverflow.com/a/31578297/209103 –

関連する問題