Обновление Android ArrayList после извлечения данных из Firebase FireStore - PullRequest
0 голосов
/ 26 января 2019

Я внедрил Firebase Firestore в свое приложение для Android, и он нормально получает данные.

Выполнено вычисление для суммирования значений, которые хранятся в Firestore.

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

Я получил данные из Firestore и сохранил их в ArrayList.Таким образом, я уже вижу, что когда ArrayList изначально заполняется из Firestore, любые новые данные не обновляли бы ArrayList.

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

Код одинаков для разделов 2 суммы и установкизначение в текстовое представление.

personTextView = v.findViewById(R.id.personSumValue);
    final ArrayList<UserPaymentModel> personArrayList = new ArrayList<>();
    db.collection("userspayment").get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
        @Override
        public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
            if (queryDocumentSnapshots.isEmpty()) {
                Log.d(TAG, "onSuccess: LIST EMPTY");
                return;
            } else {
                List<UserPaymentModel> types = queryDocumentSnapshots.toObjects(UserPaymentModel.class);

                // Add all to your list
                personArrayList.addAll(types);

                //Log.d(TAG, "onSuccess: " + mArrayList.get(2).getAmount());
                double sum = 0;
                for (UserPaymentModel u : personArrayList) {
                    if (u.getName().equals("Person1")) {
                        sum += Double.valueOf(u.getAmount());
                    }
                }
                Log.d(TAG, "onSuccess: " + sum);
                personSumTextView.setText(String.valueOf(sum));
            }
        }
    });

enter image description here

В основном есть 4 значения, и сложение 2 значений на основе определенных критериев суммирует различные значения,Если я добавлю новое значение, обзор реселлера будет обновлен, но сумма, показанная в верхней половине экрана, не обновится, пока я не закрою и не открою приложение повторно.

1 Ответ

0 голосов
/ 27 января 2019

Если вы хотите обновлять значения каждый раз, когда что-то добавляется в вашу коллекцию Firestore, тогда вам нужно использовать SnapshotListener вместо того, чтобы просто получать значения один раз.

Для этого вам нужно заменитьdb.collection("userspayment").get() с db.collection("userspayment").addSnapshotListener(EventListener).Вы можете найти более подробную информацию в документации: Получать обновления в реальном времени с Cloud Firestore

В этой реализации нет необходимости добавлять обновление, поскольку данные поступают в режиме реального времени.Все, что вам нужно сделать, это уведомить ваш адаптер, что данные были изменены с помощью notifyDataSetChanged()

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