Преобразовать счетчик в окончательный массив - PullRequest
0 голосов
/ 24 апреля 2020

Я пытаюсь реализовать счетчик, который подсчитывает уведомления из двух разных коллекций. Одна коллекция учитывает запрос друзей, а другая - запрос событий. И я хочу показать номер из обеих добавленных коллекций. Если я просто хочу показать счетчик одной коллекции, он прекрасно работает, но не оба, потому что он говорит: «Преобразовать счетчик в конечный массив», потому что он во внутреннем классе.

Ошибка в строке: // 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));

                }



            }
        });

1 Ответ

0 голосов
/ 24 апреля 2020

Вы не можете изменить Неизменное значение внутри Внутреннего Класса. Вот обходной путь:

Объявите свой счетчик следующим образом:

int[] receivecount = {0};

, затем увеличьте значение внутри:

receivecount[0]++;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...