gpt4 book ai didi

android - Kotlin Android Firebase 数据库 Hashmap 转换为类

转载 作者:太空狗 更新时间:2023-10-29 16:27:26 24 4
gpt4 key购买 nike

我正在尝试从 Firebase 数据库中获取数据。断点显示它正在获取数据,但看起来我没有正确地将它分配给我的类(class)。

导致此异常的原因:

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 = "")

最佳答案

问题: DataSnapshot#getValue() 只会返回 native types作为

Boolean
String
Long
Double
Map<String, Object> // closest to your object representation
List<Object>

哪里Map<String, Object>请求时将作为对象返回,因此在您应用显式强制转换时会出现错误

所以改用 DataSnapshot#getValue(Class<T> valueType) 作为

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

关于android - Kotlin Android Firebase 数据库 Hashmap 转换为类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46957319/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com