我正在使用Firebase创建简单的应用程序。我的Firebase数据库结构是这样的,
user:{
uid:{
name:user1,
age:22,
score:80,
address:mycity,
uid:uid
}
},
contact:{
uid:{
phone:123456
}
}
这是我的数据库参考代码。
mRef = db.getInstance().getReference("user");
mRef.orderByChild("city").equalTo(mycity)
.addValueEventListener(new ValueEventListener {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot snapshot: dataSnapshot.getChildren()) {
HashMap < String, String > hashmap = new HashMap < > ();
hashmap.put("name", snapshot.child("name").getValue());
hashmap.put("score", snapshot.child("score").getValue());
userarr.add(hashmap);
contact = db.getInstance().getReference("contact").child(snapshot.child("uid").getValue());
contact.addValueEventListener(new ValueEventListener {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
contactHashmap.put("phoneNumber", dataSnapshot.child("phone").getValue());
contactarr.add(contactHashmap);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {}
});
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {}
});
}
}
我想按“分数”对数据进行排序。如果我在客户端用“比较器”对它进行排序。两个arraylist数据无法匹配。如何通过“得分”对数据进行排序。
对不起,我的英语说得不好。
编辑:我想让用户基于相同的区域(地址)。并根据“得分”对它们进行排序。(升序或降序)
答案 0 :(得分:0)
尝试这种方式
// Sort by score
Query myTopScoreQuery = databaseReference.child("user").child(mycity).orderByChild("score");
myTopScoreQuery.addChildEventListener(new ChildEventListener() {
// TODO: implement the ChildEventListener methods as documented above
// ...
});
或
// Sort by score
Query myTopScoreQuery = databaseReference.child("user").child(mycity).orderByChild("uid/score");
myTopScoreQuery.addChildEventListener(new ChildEventListener() {
// TODO: implement the ChildEventListener methods as documented above
// ...
});