1 回答

TA贡献1815条经验 获得超10个赞
我能想到的最简单的解决方案是在每个用户对象下添加总步数作为新属性。在这种情况下,您还需要做一件事,即根据您每天获得的步数增加该属性。您的新架构应如下所示:
Firebase-root
|
--- user
|
--- userId
|
--- steps
| |
| --- //daily steps
|
--- target: 100
|
--- username: "John Doe I"
|
--- totalNumberOfSteps: 111
要根据totalNumberOfSteps属性按(升序)顺序排列用户,请使用以下代码行:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference userRef = rootRef.child("user");
Query query = userRef.orderByChild("totalNumberOfSteps");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String username = ds.child("username").getValue(String.class);
long totalNumberOfSteps = ds.child("totalNumberOfSteps").getValue(Long.class);
Log.d(TAG, username + " - Steps: " + totalNumberOfSteps);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
}
};
query.addListenerForSingleValueEvent(valueEventListener);
然后按降序排列,请从以下帖子中查看我的回答:
如何按升序或降序排列firebase数据库数据?
最后,logcat 中的结果将是:
John Doe II - Steps: 111
John Doe IV - Steps: 88
John Doe I - Steps: 79
John Doe V - Steps: 12
John Doe III - Steps: 0
John Doe VI - Steps: 0
添加回答
举报