以下是我的Firebase数据:
我想查询同一商店,并计算到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吗?
答案 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);
}