Kotlin Android Firebase数据库Hashmap转换为类 [英] Kotlin Android Firebase Database Hashmap Cast to Class
本文介绍了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屋!
查看全文