Kotlin Android Firebase数据库Hashmap转换为类 [英] Kotlin Android Firebase Database Hashmap Cast to Class

查看:48
本文介绍了Kotlin Android Firebase数据库Hashmap转换为类的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试从Firebase数据库获取数据.断点表明它正在获取数据,但是好像我没有正确地将其分配给班级.

I am trying to get data from a firebase database. The breakpoints show it is getting the data, but it looks like I am not properly assigning it to my class.

这会导致此异常:

java.lang.ClassCastException:无法将java.util.HashMap强制转换为课

java.lang.ClassCastException: java.util.HashMap cannot be cast to Class

override fun onDataChange(p0: DataSnapshot?) {
    if (p0!!.exists()){
        val children = p0!!.children
        children.forEach {
            println(it.value.toString())
            var item : DashboardItem = it.value as DashboardItem
            println(item)
        }
    }
}

这是数据库导出:

{
 "dashboard" : [ 
    { "name" : "News"}, 
    { "name" : "Chatroom"},
    { "name" : "Music"},
    { "name" : "Quotes"},
    { "name" : "Reminder"},
    { "name" : "Poll"},
    { "name" : "Suggestion"},
    { "name" : "LogOut"} ]  
}

我要创建的类对象

data class DashboardItem(val name: String = "")

推荐答案

问题:其中,当请求时, Map< String,Object> 将作为对象返回,因此,当您应用显式强制转换时会出现错误

where Map<String, Object> will be returned as object when requested hence the error when you apply explicit cast

因此,请改为使用

So instead use DataSnapshot#getValue(Class<T> valueType) as

val item : DashboardItem = it.getValue(DashboardItem::class.java)

这篇关于Kotlin Android Firebase数据库Hashmap转换为类的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆