将Firebase字段数组转换为列表
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将Firebase字段数组转换为列表相关的知识,希望对你有一定的参考价值。
我正在尝试转换Firebase Cloud Firestore中包含数组的字段。该字段存储在文档中,并在字段中包含10个值。
我可以使用以下代码获取数据但是我想知道是否可以将此数据转换为List?
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());
答案
创建一个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());
}
}
});
以上是关于将Firebase字段数组转换为列表的主要内容,如果未能解决你的问题,请参考以下文章
需要帮助将firebase中的数据转换为string []数组。尝试了所有可用的方法,但坚持只获取最后一个值