我想按排序显示每个用户的分数。
我在 Firebase 控制台中的数据库结构如下所示
我创建了两个表,一个是Score,一个是User,
在 Score 表中,我使用用户 ID、GameA 的分数、游戏 B 的分数和游戏 C 的分数
现在我想以排序的方式显示GameA的分数,每个用户都可以在 ListView 中看到排序后的数据,这样他就可以知道自己比别人落后了多少......
在 Firebase 中,我尝试使用 Query 但无法成功排序,
Query queryRef = mDatabase.orderByChild("scores").limitToFirst(100);
queryRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) {
Score score=postSnapshot.getValue(Score.class);
Log.d("test"," values is " + score.getScoreOfGameA() + " " + score.getUserId());
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
上面的查询结果会来但是值为0,null
如下图
02-02 06:29:09.559 10791-10818/com.firebasedatabaselearn W/PersistentConnection: pc_0 - Using an unspecified index. Consider adding '".indexOn": "scores"' at / to your security and Firebase Database rules for better performance
02-02 06:29:09.562 10791-10791/com.firebasedatabaselearn W/ClassMapper: No setter/field for oFAgix9TlUNS92R2VJaJbNYtH3z2 found on class com.firebasedatabaselearn.module.Score
02-02 06:29:09.562 10791-10791/com.firebasedatabaselearn W/ClassMapper: No setter/field for FrJpw8SMzZYfbECuvhHvbxnbCmh2 found on class com.firebasedatabaselearn.module.Score
02-02 06:29:09.562 10791-10791/com.firebasedatabaselearn D/test: values is 0 null
02-02 06:29:09.562 10791-10791/com.firebasedatabaselearn W/ClassMapper: No setter/field for NnmawN5gMFVhwaGmZxXgUCPsDMb2 found on class com.firebasedatabaselearn.module.Score
02-02 06:29:09.562 10791-10791/com.firebasedatabaselearn W/ClassMapper: No setter/field for oFAgix9TlUNS92R2VJaJbNYtH3z2 found on class com.firebasedatabaselearn.module.Score
02-02 06:29:09.562 10791-10791/com.firebasedatabaselearn W/ClassMapper: No setter/field for RLEmo9Vyq8Rktwn6Cuz4d6vadml2 found on class com.firebasedatabaselearn.module.Score
02-02 06:29:09.562 10791-10791/com.firebasedatabaselearn W/ClassMapper: No setter/field for FrJpw8SMzZYfbECuvhHvbxnbCmh2 found on class com.firebasedatabaselearn.module.Score
02-02 06:29:09.562 10791-10791/com.firebasedatabaselearn D/test: values is 0 null
谁能建议我如何实现这一点?
最佳答案
终于访问了这个Firebase orderByChild and equalTo() queries don't work , 我通过下面的代码实现了
queryRef = mDatabase.child("scores").orderByChild("scoreOfGameA").limitToLast(100);
queryRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) {
Score score=postSnapshot.getValue(Score.class);
Log.d("test"," values is " + score.getScoreOfGameA());
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
关于android - 在 Firebase、Android 中每个注册用户数据的排序分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41983386/