查询获得前10名最高分

时间:2016-08-22 09:59:54

标签: android firebase firebase-realtime-database

我在我的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")

但它似乎无法解决的问题是它没有返回"杀死"儿童。它返回了我已经可以访问的整个坦克树。我想要的是获得所有"杀死"孩子,如果可能的话?而且我不确定我怎么能获得最高的杀戮,因为除非我遍历所有的用户名,否则无法知道哪些用户名是坦克或大炮。

任何人都可以帮我吗?

2 个答案:

答案 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的答案代码循环播放器。