当我尝试计算Firebase数据库中的数据时遇到问题。我尝试过多次更改,但是仍然找不到解决方法。
private void setupBadge() {
String key = request.getKey();
if (key != null) {
request.child(key).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
mCartItemCount = (int) dataSnapshot.getChildrenCount();
if (textCartItemCount != null) {
if (mCartItemCount == 0) {
if (textCartItemCount.getVisibility() != View.GONE) {
textCartItemCount.setVisibility(View.GONE);
}
} else {
textCartItemCount.setText(Integer.toString(mCartItemCount) + "");
if (textCartItemCount.getVisibility() != View.VISIBLE) {
textCartItemCount.setVisibility(View.VISIBLE);
}
}
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}
我认为问题可能出在我的数据库中,因为我试图获取密钥。但是,请告诉我我的代码是否有问题,导致它始终始终只显示“ 0”。
答案 0 :(得分:0)
您可以尝试:
request.child(key).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
for ( DataSnapshot mdataSnapshot : dataSnapshot)
{
int count = mdataSnapshot.getChildrenCount();
**// Here count for number for list of items**
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
您可以转到firebase实时数据库datasnapshot以进一步了解它,或者通过调试并解决问题来查看datasnapshot作为响应。
答案 1 :(得分:0)
对不起,我的理解是: 您要计算“历史”节点中子代的数量。 然后,您可以执行诸如orderbyChild之类的查询,并将“历史记录”作为子键。
ValueEventListener侦听器=新的ValueEventListener ......
然后执行查询:
DatabaseReference dbReference = ....
查询查询= dbReference.orderbyChild(“历史记录”);
query.addsingleEventListener(listener);
希望它会有所帮助:)快乐编码:-)