Есть ли способ сохранить значения данных из firestore в массив? - PullRequest
0 голосов
/ 28 октября 2019

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

 db.collection("Activity")
                .whereEqualTo("plan_id", plan_id)
                .get()
                .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                    @Override
                    public void onComplete(@NonNull Task<QuerySnapshot> task) {
                        if (task.isSuccessful()) {
                            List<Long> progressList = new ArrayList<>();
                            List<String> titleList = new ArrayList<>();
                            for (QueryDocumentSnapshot document : task.getResult()) {
                                Log.d(TAG, document.getId() + " => " + document.get("progress"));

                            }
                        } else {
                            Log.d(TAG, "Error getting documents: ", task.getException());
                        }
                    }
                });

Я пробовал

int[] prog = (int[]) document.get("progress");
String[] title = (String[]) document.get("title");

, но не повезло ...

1 Ответ

1 голос
/ 28 октября 2019

Я не знаком с Firestore, но кажется, что QueryDocumentSnapshot похож на Map<String, Object>. Следующий фрагмент кода показывает, как сохранить эти значения в List, как объявлено в вашем коде - progressList и titleList, соответственно.

List<int> progressList = new ArrayList<>();
List<String> titleList = new ArrayList<>();
for (QueryDocumentSnapshot document : task.getResult()) {
    progressList.add(Integer.valueOf(document.get("progress").toString()));
    titleList.add(document.get("title").toString());
}

И если вы все еще хотите использовать Array для хранения значений, вы можетеиспользуйте API ArrayList.toArray() следующим образом:

int[] prog = new int[progressList.size()];
prog = progressList.toArray(prog);

String[] title = new String[titleList.size()];
title = titleList.toArray(title);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...