【发布时间】:2017-04-26 09:54:37
【问题描述】:
我正在使用 Firebase 数据库。我的“用户”数据如下所示:
Users {
"38NFjDwCPAdkdvbzLb1VkFeaBIV2" : {
"points" : 10,
"userEmail" : "abc@hotmail.com",
"userName" : "Tom"
},
"pH3HWzu9SVbW56jwqCb55hHryAD2" : {
"points" : 17,
"userEmail" : "xyz@hotmail.com",
"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)或进行反转客户端(鉴于列表显示在移动设备上,它不应该很长)。见stackoverflow.com/questions/34156996/… -
嘿,谢谢你的想法。我会尝试按照您所说的制作另一个带有负分的属性。
标签: android listview firebase firebase-realtime-database