从数据库参考计数

时间:2018-09-26 03:42:23

标签: android firebase firebase-realtime-database

当我尝试计算Firebase数据库中的数据时遇到问题。我尝试过多次更改,但是仍然找不到解决方法。

this is my database

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”。

2 个答案:

答案 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);

希望它会有所帮助:)快乐编码:-)