如何使用Android Studio/Kotlin访问FirebaseFirestore中的数组字段?
我的云Firestore数据库中有一个名为Experience的对象数组。每个体验都有一个如何使用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中作为列表类型对象到达。您使用它就像使
用户名
,日期
,等等。体验列表中可以有多个体验。如何访问我的经验数组的特定字段?我知道,比如说,在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