java - 将 Firebase 字段数组转换为列表

标签 java android firebase google-cloud-firestore

我正在尝试转换 Firebase Cloud Firestore 中具有数组的字段。该字段存储在文档中,并包含 10 个值。

我可以使用以下代码获取数据,但是我想知道是否可以将此数据转换为列表?

public void getAllowedPostcodes(){
    DocumentReference docRef = 
db.collection("AllowedPostcodes").document("tmGzpfFPFTwGw28uS8y1");

    docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
        @Override
        public void onComplete(@NonNull Task<DocumentSnapshot> task) {
            if (task.isSuccessful()) {
                DocumentSnapshot document = task.getResult();
                if (document != null) {
                    Log.d(TAG, "DocumentSnapshot data: " + task.getResult().getData());

                } else {
                    Log.d(TAG, "No such document");
                }
            } else {
                Log.d(TAG, "get failed with ", task.getException());
            }
        }
    });
}

我已经尝试了以下方法,但它无法编译:

"Cannot resolve constructor 'ArrayList(java.util.Map<java.lang.String,java.lang.Object>)"

这是我的代码:

List<String> allowedData = new ArrayList<String>(task.getResult().getData());

数据库结构如下: enter image description here

最佳答案

创建一个 forEach 循环来迭代每个字段,将其转换为 String 并将其添加到 ArrayList:

docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
            @Override
            public void onComplete(@NonNull Task<DocumentSnapshot> task) {
                if (task.isSuccessful()) {
                    DocumentSnapshot document = task.getResult();
                    if (document != null) {
                        Log.d(TAG, "DocumentSnapshot data: " + task.getResult().getData());
                        for(Object item : task.getResult().getData().values())
                            allowedData.add(item.toString());
                    } else {
                        Log.d(TAG, "No such document");
                    }
                } else {
                    Log.d(TAG, "get failed with ", task.getException());
                }
            }
        });

关于java - 将 Firebase 字段数组转换为列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49016643/

相关文章:

java - 在Java中更改Import的名称,或者导入两个同名的类

android - 我的 onReceive 响应哪个请求?

android - 如何在 Android 中使用 Game Rotation Vector 中的数字?

java - 如何使 Android Google 登录按钮仅登录而不使用 FirebaseAuth 注册?

android - java.lang.RuntimeException : Internal error in Firestore (0. 6.6-dev)

java - log4j2 的 SQL 异常

java - 多个 Flume-ng hdfs 接收器写入同一路径

java - 注释 @GetMapping 和 @RequestMapping(method = RequestMethod.GET) 之间的区别

java - Firebase onDataChange - 值事件监听器不监听更改

ios - Firebase 嵌套解析 Swift