android - 如何使用/Android Studio/Kotlin 访问 Firebase Firestore 中的数组字段?

标签 android arrays kotlin google-cloud-firestore

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

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

但是我怎样才能在 Kotlin 中做同样的事情呢?

最佳答案

当您将一组自定义(体验)对象添加到 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 中获取数据来获取自定义(体验)对象的列表。属性(property)。使用时:

List<Object> list = (List<Object>) document.get("experiences");
Object item = list.get(yourIndex);

item对象实际上是一个 HashMap而不是 Experience目的。上面几行代码我是用Java写的,所以你可以更清楚的看到返回类型。所以像下面这样一行:

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

不会工作。如果您尝试转换 HashMapExperience对象,您将收到如下所示的错误:

java.lang.ClassCastException: java.util.HashMap cannot be cast to com.example.Experience

所以要解决这个问题,您必须编写自己的代码,它可以帮助您转换 HashMap反对 Experience目的。此外,如果您需要 List<Experience> ,您还需要转换 List<HashMap>反对 List<Experience>对象。

关于android - 如何使用/Android Studio/Kotlin 访问 Firebase Firestore 中的数组字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56299348/

相关文章:

android - 无法在真实设备上运行自动化脚本

android - 用户单击时如何获取 Firebase 通知正文?

c++ - 如何在不使用任何不必要空间的情况下合并三个排序数组?

C:将 unsigned char 数组转换为 signed int(反之亦然)

android - 适用于 Android 的简单 TCP 监听器线程..我的连接不上

android - 送货回执请求不适用于 XMPP Android (aSmack)

ruby - 计算 Ruby 中每个唯一对象属性的对象总和

java - Kotlin - 我们如何使用 getter 和 setter 访问私有(private)属性(property)?访问方法是否在内部调用?

带有 Kotlin 的 Android - 将数据传回上一个 Activity

Android : Kotlin : MVVM : Why viewModel. onButtonClicked() 导致应用崩溃?