首页 > 解决方案 > 将计数器转换为最终数组

问题描述

我正在尝试实现一个计数器女巫计数来自 2 个不同集合的通知。一个集合计算好友请求,另一个计算事件请求。我想显示添加的两个集合中的数字。如果我只想显示一个集合的计数器,它可以很好地工作,但不是两者都可以,因为它说:“将计数器转换为最终数组”,因为它在内部类中。

错误在行://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));

                }



            }
        });

标签: javaandroidgoogle-cloud-firestore

解决方案


您不能更改内部类中的不可变值。这是一种解决方法:

像这样声明你的计数器:

int[] receivecount = {0};

然后增加里面的值:

receivecount[0]++;

推荐阅读