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);
}
}
私は、各ユーザのポイントに応じて、降順で私のリストを表示するために、上記のコードにどのような変更を加えていますか?
降順で結果を取得する組み込みの方法はありません。一般的な解決策は、反転値(すなわち、negativeScore)を持つ余分な特性を維持するか、または反転クライアント側を行うことである(リストがモバイルデバイス上に表示される場合、決してそれほど長くするべきではない)。 http://stackoverflow.com/questions/34156996/firebase-data-desc-sorting-in-android –
アイデアのおかげでね。ネガティブなスコアで別のアトリビュートを作ることについてあなたが言ったことをやり遂げようとします。 –