Firebase查询相同密钥并计算Android总数

时间:2017-07-12 12:58:20

标签: android firebase firebase-realtime-database

以下是我的Firebase数据:

enter image description here

我想查询同一商店,并计算到Android的总数量, 我已经设置了hashmap和listdata以及listview

 final Firebase myFirebaseRef = new Firebase("******");

    myFirebaseRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot snapshot)
        {
            lvAll.setAdapter(null);
            int size = (int) snapshot.getChildrenCount();
            HashMap<String, Object> myHasMap = new HashMap<String, Object>();
            listData.clear();
            myHasMap.clear();
            myHasMap.put("Name",coffeename[0]);
            myHasMap.put("Count","Total is "+size);
            listData.add(myHasMap);
            listItemAdapter.notifyDataSetChanged();
            lvAll.setAdapter(listItemAdapter);
        }
        @Override
        public void onCancelled(FirebaseError firebaseError) {
        }
    });

这是JSON:

  

{     “5533”:{       “coffeeNo”:“美式咖啡”,       “日期”:20170602,       “store”:“中正店”,       “风格”:“小热”     },     “1231236”:{       “coffeeNo”:“美式咖啡”,       “日期”:20170604,       “store”:“桃铭店”,       “风格”:“中冰”     },     “123q”:{       “coffeeNo”:“美式咖啡”,       “日期”:20170603,       “store”:“中山店”,       “风格”:“中热”     },     “qwe223”:{       “coffeeNo”:“美式咖啡”,       “日期”:20170607,       “store”:“中山店”,       “风格”:“中热”     }   }

例如:我想查询相同的密钥,我可以得到商店“中山店”中的数字是2,商店“中正店”是1,商店“桃铭店”是1吗?

1 个答案:

答案 0 :(得分:0)

您需要循环快照中的项目并根据coffeeNo聚合:

for (DataSnapshot child: snapshot.getChildren()) {
    String coffeeNo = child.child("coffeeNo").getValue(String.class);
    int count = 1;
    if (myHashMap.containsKey(coffeeNo)) {
        count = (int) myHashMap.get(coffeeNo) + 1;
    }
    myHashMap.put(coffeeNo, count);
}