有没有办法将数据从Firestore存储到数组中?

时间:2019-10-28 00:26:51

标签: java android arrays firebase google-cloud-firestore

我试图在每个文档的两个特定字段中获取数据,其中一个字段是整数,另一个字段是字符串。我希望每个字段分别存储在数组中。

 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 个答案:

答案 0 :(得分:1)

我对Firestore不熟悉,但似乎QueryDocumentSnapshotMap<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);