我在我的Android应用程序中使用firebase,我的树看起来像这样
data > tanks > username1 > kills = 1, tries = 3
> username5 > kills = 5, tries = 13
> username7 > kills = 3, tries = 7
> username2 > kills = 6, tries = 4
data > cannons > username9 > kills = 31, tries = 33
> username7 > kills = 15, tries = 13
> username3 > kills = 13, tries = 77
> username6 > kills = 66, tries = 44
我想要做的是向用户显示大炮或坦克最高杀戮的前10个用户名(取决于用户选择的那个)但我似乎无法找到解决方案。
起初我认为解决方案就像
ref.child("data/tanks").orderbyChild("kills")
但它似乎无法解决的问题是它没有返回"杀死"儿童。它返回了我已经可以访问的整个坦克树。我想要的是获得所有"杀死"孩子,如果可能的话?而且我不确定我怎么能获得最高的杀戮,因为除非我遍历所有的用户名,否则无法知道哪些用户名是坦克或大炮。
任何人都可以帮我吗?
答案 0 :(得分:0)
DatabaseReference myref= FirebaseDatabase.getInstance().getReference().chield("tanks");
myref.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
userlist= new ArrayList<String>();
Toast.makeText(DataFromFirebase.this, "no of usersare " + dataSnapshot.getChildrenCount(), Toast.LENGTH_LONG).show();
//String value = (String) dataSnapshot.getValue();
// Result will be holded Here
for (DataSnapshot dsp : dataSnapshot.getChildren()) {
userlist.add(String.valueOf(dsp.getKey())); /
}
@Override
public void onCancelled(DatabaseError firebaseError) {
}
}
使用上面的代码,您将获得tank chield中的所有用户,然后对所有用户引用重复此操作,然后获取所有kill值
答案 1 :(得分:0)
有点难以确定,但我认为您正在寻找limitToLast()
:
var topScorers = ref.child("data/tanks").orderbyChild("kills").limitToLast(10);
然后使用Narender的答案代码循环播放器。