Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:fireStore将可映射对象数组转换为对象时出现问题_Android_Firebase_Kotlin_Google Cloud Firestore - Fatal编程技术网

Android:fireStore将可映射对象数组转换为对象时出现问题

Android:fireStore将可映射对象数组转换为对象时出现问题,android,firebase,kotlin,google-cloud-firestore,Android,Firebase,Kotlin,Google Cloud Firestore,我无法解决我的问题 正如您在屏幕上看到的,我的Firestore数据库中有一个可映射的数组 然后我想加载这个列表,并转换像这样一个对象中的所有项 下面是我将可映射对象列表转换为对象的代码 我说错话了 java.lang.ClassCastException:java.util.HashMap无法强制转换为 com.example.gestionnairedchantiers.firebase.ItemWithQuantity 第一个日志返回 我不明白你为什么能帮我?我找不到将可映射数组转

我无法解决我的问题

正如您在屏幕上看到的,我的Firestore数据库中有一个可映射的数组

然后我想加载这个列表,并转换像这样一个对象中的所有项

下面是我将可映射对象列表转换为对象的代码

我说错话了

java.lang.ClassCastException:java.util.HashMap无法强制转换为 com.example.gestionnairedchantiers.firebase.ItemWithQuantity

第一个日志返回

我不明白你为什么能帮我?我找不到将可映射数组转换为对象列表的方法

多谢各位

编辑:一个解决方案,也许是最好的


我将列表中的项目转换为HashMap,然后转换为我的对象。

正如我在您的屏幕截图中看到的,“ListPersonal”是一个数组类型的属性,其中包含“ItemWithQuantity”对象。调用DocumentSnapshot时,返回的对象实际上是一个HashMap,而不是一个列表,这可能是您所期望的

要将该数组映射到列表中,请查看以下文章:

基本上,您应该创建一个新类,该类将保存一个名为“ListPersonal”的List类型的属性,并将每个文档映射到该类型的对象中:

val listePersonnel: List<ItemWithQuantity> = document.toObject(NewClass.class).listePersonnel
val listePerson:List=document.toObject(NewClass.class).listePerson
编辑:

我不知道是否可以从文档中以DocumentSnapshot的形式检索我的field ListPersonal

您无法检索“ListPersonal”并将其转换为DocumentSnapshot对象。您应该做的是将整个文档转换为“NewClass”的对象,然后像类的任何其他属性一样获取列表

在本文中,作者使用.toObject()将其列表转换为对象,您只能将其与DocumentSnapshot一起使用

作者(我),我正在使用“.toObject()”将整个文档转换为包含所需列表的对象

我用不同的字段获取文档,我想将一个字段(可映射列表)转换为一个对象列表

在数据库中,该字段是一个对象数组。因此,您需要将该数组转换为自定义对象列表(如本答案和那篇文章中所述)

我使用document.get(“list”),我得到一个Any/HashMap


这就是我们要讨论的,不是使用get(“list”),因为它返回一个映射,应该像您已经做的那样进行迭代,而是直接将该字段获取到一个“NewClass”对象列表中。

你好,Alex,谢谢您的回答!我看过这篇文章,但在我的例子中,我没有实现使用它,因为我不知道是否可以从文档中以DocumentSnapshot的形式检索我的field ListPersonal。在本文中,autor使用.toObject()将其列表转换为对象,您只能将其与DocumentSnapshot一起使用。在我的例子中,我得到了带有不同字段的文档,我想将一个字段(可映射列表)转换为一个对象列表。所以当我使用document.get(“list”)时,我会得到一个Any/HashMap。我已经添加了一个我找到的解决方案,我不知道它是否是最好的解决方案。请检查我的更新答案。我希望现在更清楚。所以如果你认为我的答案对你有帮助,请考虑通过点击复选来接受它。✔️) 在投票箭头下方的左侧。应该将颜色更改为绿色。我非常感谢。谢谢!