将计数器转化为最终数组

我想实现一个计数器,计算来自两个不同集合的通知,一个集合计算朋友请求,另一个计算事件请求。我想显示从两个集合中添加的数量,如果我只想显示一个集合的计数器,它可以完美地工作。如果我只想显示一个集合的计数器,它可以完美地工作,但不是两个,因为它说:”Transform counter into final array”,因为它在一个内部类中。

错误的地方在于:/ receivecount = map.size()这一行。

所以我现在的代码是这样的

 mFirestore.collection("users").document(usid).collection("request").addSnapshotListener(new EventListener<QuerySnapshot>() {
            @Override
            public void onEvent(@Nullable QuerySnapshot queryDocumentSnapshots, @Nullable FirebaseFirestoreException e) {
                int receivecount = 0;


                for (DocumentChange doc : queryDocumentSnapshots.getDocumentChanges()) {
                    if (doc.getType() == DocumentChange.Type.ADDED) {
                        String type = (String) doc.getDocument().get("Type");


                        final String otherID = (String) doc.getDocument().get("otherid");

                        mFirestore.collection("users").document(usid).collection("eventeinladung").addSnapshotListener(new EventListener<QuerySnapshot>() {
                            @Override
                            public void onEvent(@Nullable QuerySnapshot queryDocumentSnapshots, @Nullable FirebaseFirestoreException e) {
                                for (DocumentChange doc : queryDocumentSnapshots.getDocumentChanges()) {
                                    if (doc.getType() == DocumentChange.Type.ADDED) {
                                        Map map = doc.getDocument().getData();
                                 //       receivecount = map.size();




                                    }
                                }
                            }
                        });

                        if (type.equals("received")) {
                            receivecount++;

                        }

                    }
                }




                if(receivecount == 0){
                    number.setVisibility(View.INVISIBLE);
                    numbercontainer.setVisibility(View.INVISIBLE);
                }
                else {
                    number.setText(String.valueOf(receivecount));

                }



            }
        });

解决方案:

你不能在一个内类中改变一个不可变的值。这里有一个变通的方法。

像这样声明你的计数器

int[] receivecount = {0};

然后在内部增加值。

receivecount[0]++;

给TA打赏
共{{data.count}}人
人已打赏
未分类

为什么我只传递了一个参数就得到一个TypeError?

2022-9-8 22:11:27

未分类

Azure DevOps API - 更新测试用例自动化状态

2022-9-8 22:11:29

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索