Подборка пожаров Firebase документов из другого документа коллекции - PullRequest
0 голосов
/ 24 января 2019

У меня есть три коллекции.

Первая коллекция пользователей в этой коллекции клиентов внутри коллекции клиентов есть коллекция задач.

Теперь я получаю первого пользователя, затем получаю клиента и каждую коллекцию клиентовизменение документа получить дату сбора заданий, поданную с условием ограничения.

Затем снова получить собрание заданий, значение даты прохода которого.

Но моя проблема в том, что если документ изменяется, то он каждый раз снова устанавливает дату, поэтому данныепоказать несколько раз ..

Ниже мой код:

firestoreDB.collection(confing.USER_COLLECTION)
                .document(UserId)
                .collection(confing.Customer_COLLECTION)
                .addSnapshotListener(getActivity(), new EventListener<QuerySnapshot>() {
                    @Override
                    public void onEvent(final QuerySnapshot documentSnapshots, FirebaseFirestoreException e) {
                        if (e != null) {
                            return;
                        }
                        categorylist.clear();
                        filterlist.clear();
                        final ArrayList<Date> values = new ArrayList<Date>();
                        for (final DocumentChange documentChange : documentSnapshots.getDocumentChanges()) {
                            documentChange.getDocument()
                                    .getReference()
                                    .collection(confing.TASK_COLLECTION)
                                    .whereEqualTo("TaskStatus", "Pending")
                                    .orderBy("TaskDate", Query.Direction.DESCENDING)
                                    .limit(1)
                                    .addSnapshotListener(getActivity(), new EventListener<QuerySnapshot>() {
                                        @Override
                                        public void onEvent(@javax.annotation.Nullable QuerySnapshot queryDocumentSnapshots, @javax.annotation.Nullable FirebaseFirestoreException e) {
                                            if (e != null) {
                                                return;
                                            }

                                            for (DocumentSnapshot documentSnapshot : queryDocumentSnapshots) {
                                                final Category_Model categorydata = new Category_Model();
                                                Date value = (documentSnapshot.getDate("TaskDate"));
                                               /* if (!values.contains(value)) {
                                                    values.add(value);
                                                }*/
                                                categorydata.setTaskdate(value);
                                                categorydata.setStatus(documentSnapshot.getString("TaskStatus"));
                                                final ArrayList<Task_datatype> categorytasklist = new ArrayList<Task_datatype>();
                                                documentChange.getDocument()
                                                        .getReference()
                                                        .collection(confing.TASK_COLLECTION)
                                                        .whereEqualTo("TaskDate", documentSnapshot.getDate("TaskDate"))
                                                        .whereEqualTo("TaskStatus", documentSnapshot.getString("TaskStatus"))
                                                        .addSnapshotListener(getActivity(), new EventListener<QuerySnapshot>() {
                                                            @Override
                                                            public void onEvent(@javax.annotation.Nullable QuerySnapshot queryDocumentSnapshots, @javax.annotation.Nullable FirebaseFirestoreException e) {
                                                                if (e != null) {
                                                                    return;
                                                                }
                                                                for (DocumentSnapshot documentSnapshot : queryDocumentSnapshots) {
                                                                    final Task_datatype task_datatype = new Task_datatype();
                                                                    task_datatype.setTaskDocId(documentSnapshot.getId());
                                                                    task_datatype.setType(documentSnapshot.getString("Type"));
                                                                    task_datatype.setTaskDate(inputFormatter1.format(documentSnapshot.getDate("TaskDate")));
                                                                    task_datatype.setTaskDescription(documentSnapshot.getString("TaskDescription"));
                                                                    task_datatype.setTaskTime(documentSnapshot.getString("TaskTime"));
                                                                    task_datatype.setTaskStatus(documentSnapshot.getString("TaskStatus"));
                                                                    task_datatype.setCustomername(documentChange.getDocument().getString("CustomerName"));
                                                                    task_datatype.setCustomermobileno(documentChange.getDocument().getString("MobileNo1"));
                                                                    task_datatype.setCustomerDocId(documentChange.getDocument().getId());
                                                                    categorytasklist.add(task_datatype);
                                                                }
                                                                categorydata.setCategory_task_modelArrayList(categorytasklist);
                                                                categorylist.add(categorydata);
                                                                filterlist.add(categorydata);
                                                                if (categorylist.size() > 0 && filterlist.size() > 0) {
                                                                    monthTaskBinding.noimage.setVisibility(View.GONE);
                                                                    category_adapter = new DoneTask_Adapter(filterlist, getActivity(), firestoreDB, monthTaskBinding.swipereferesh,progressDialog);
                                                                    monthTaskBinding.monthTasklist.setLayoutManager(new LinearLayoutManager(getActivity()));
                                                                    monthTaskBinding.monthTasklist.setAdapter(category_adapter);
                                                                } else {
                                                                    monthTaskBinding.noimage.setVisibility(View.VISIBLE);
                                                                }
                                                            }
                                                        });
                                            }

                                        }
                                    });

                        }


                        // monthTaskBinding.swipereferesh.setRefreshing(false);
                    }
                });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...