【问题标题】:Get Array of object From Firestore从 Firestore 获取对象数组
【发布时间】:2019-02-12 09:44:28
【问题描述】:

我从firestore获取数据放入ArrayList

arraylist=document.get("questionsList") as ArrayList<Question>
Toast.makeText(context, arraylist.size, Toast.LENGTH_LONG).show()

当我打印数组的大小时它没问题 当我需要从 Arraylist 获取问题项时放置

Toast.makeText(context, arraylist!![0].question, Toast.LENGTH_LONG).show()

结果是 java.util.HashMap 无法转换为 Question

document in firestore image here

问题类

class Question (var question:String,var choices:ArrayList<String>,var correctAnswer:String
                ,private var userAnswer:String): Parcelable {
    constructor(parcel: Parcel) : this(
        parcel.readString()!!, arrayListOf<String>().apply {
            parcel.readString()
        },
        parcel.readString()!!,
        parcel.readString()!!
    )
    constructor():this(question="",choices = ArrayList<String>(),correctAnswer = "",userAnswer = "")

    override fun writeToParcel(parcel: Parcel, flags: Int) {
        parcel.writeString(question)
        parcel.writeString(correctAnswer)
        parcel.writeString(userAnswer)
    }

    override fun describeContents(): Int {
        return 0
    }

    companion object CREATOR : Parcelable.Creator<Question> {
        override fun createFromParcel(parcel: Parcel): Question {
            return Question(parcel)
        }

        override fun newArray(size: Int): Array<Question?> {
            return arrayOfNulls(size)
        }
    }
}

【问题讨论】:

  • 请添加您的数据库结构以查看您的questionsList 属性,并请回复@AlexMamo
  • @AlexMamo 我添加了它
  • 请同时添加你的Question类的内容。
  • @AlexMamo 在上面

标签: android firebase dictionary arraylist kotlin


【解决方案1】:

您可以使用 document.toObject 将您的 Firestore 结果转换为 Kotlin 类。如果您只是在字段上使用get,您将获得一个 HashMap。在您的情况下,您可以创建一个具有 questionsList 属性的类,然后将其转换为您的类。我已经有几个月没有使用 Kotlin,但我相信它会是这样的:

data class MyQuestionList(
    var questionsList: ArrayList<Question>
)

val myQuestionList = document.toObject(MyQuestionList::class.java)

Toast.makeText(context, myQuestionList.questionsList!![0].question, Toast.LENGTH_LONG).show()

另外,请注意!!,因为如果对象为空,它将导致运行时异常。

【讨论】:

    猜你喜欢
    • 2018-08-12
    • 2021-05-14
    • 2018-12-15
    • 1970-01-01
    • 1970-01-01
    • 2021-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多