如何使用Android Studio/Kotlin访问FirebaseFirestore中的数组字段?

如何使用Android Studio/Kotlin访问FirebaseFirestore中的数组字段?,android,arrays,kotlin,google-cloud-firestore,Android,Arrays,Kotlin,Google Cloud Firestore,我的云Firestore数据库中有一个名为Experience的对象数组。每个体验都有一个用户名,日期,等等。体验列表中可以有多个体验。如何访问我的经验数组的特定字段?我知道,比如说,在Dart中,我可以键入如下内容: querySnapshot.documents[i].data["Experience"][number of array item]["username"] 但是我如何在Kotlin中做同样的事情呢?列表类型字段在Java/Kotlin中作为列表类型对象到达。您使用它就像使

我的云Firestore数据库中有一个名为Experience的对象数组。每个体验都有一个
用户名
日期
,等等。体验列表中可以有多个体验。如何访问我的经验数组的特定字段?我知道,比如说,在Dart中,我可以键入如下内容:

querySnapshot.documents[i].data["Experience"][number of array item]["username"] 

但是我如何在Kotlin中做同样的事情呢?

列表类型字段在Java/Kotlin中作为列表类型对象到达。您使用它就像使用您选择的语言处理任何其他列表一样

List<Object> list = List<Object> snapshot.get("list-type-field");
Object item = list.get(index_of_your_choice);
// then check its type and cast it
List List=List snapshot.get(“列表类型字段”);
objectitem=list.get(您选择的索引);
//然后检查它的类型并将其转换

您应该熟悉和。

将自定义(体验)对象数组添加到Cloud Firestore数据库中时,它将作为列表添加到数据库中。如果您的数据库看起来类似于:

Firestore-root
   |
   --- myCollection (collection)
          |
          --- myDocument (document)
                |
                --- experiences (array)
                       |
                       --- 0 (Experience object)
                       |   |
                       |   --- username: "UserName"
                       |   |
                       |   --- date: May 25, 2019 at 12:12:12 PM UTC+3
                       |
                       --- 1 (Experience object)
                           |
                           --- username: "AnotherUserName"
                           |
                           --- date: May 24, 2019 at 13:13:13 PM UTC+3
请注意,目前仅通过从
experiences
属性获取数据无法获取自定义(体验)对象的列表。使用时:

List<Object> list = (List<Object>) document.get("experiences");
Object item = list.get(yourIndex);
这是行不通的。如果您尝试将该
HashMap
强制转换为
Experience
对象,您将得到如下错误:

java.lang.ClassCastException:java.util.HashMap不能转换为com.example.Experience

因此,要解决这个问题,您必须编写自己的代码,这可以帮助您将
HashMap
对象转换为
Experience
对象。此外,如果需要
列表
,还需要将
列表
对象转换为
列表
对象

val experience: Experience = (list[yourIndex] as Experience).username