Ray*_*mta 2 android android-gridview kotlin firebase-realtime-database
我正在尝试从Firebase数据库获取数据。断点表明它正在获取数据,但是看来我没有正确地将其分配给我的班级。
导致此异常:
java.lang.ClassCastException:无法将java.util.HashMap强制转换为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)
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是数据库导出:
{
"dashboard" : [
{ "name" : "News"},
{ "name" : "Chatroom"},
{ "name" : "Music"},
{ "name" : "Quotes"},
{ "name" : "Reminder"},
{ "name" : "Poll"},
{ "name" : "Suggestion"},
{ "name" : "LogOut"} ]
}
Run Code Online (Sandbox Code Playgroud)
我要创建的类对象
data class DashboardItem(val name: String = "")
Run Code Online (Sandbox Code Playgroud)
问题:DataSnapshot#getValue() 只会native types以
Boolean
String
Long
Double
Map<String, Object> // closest to your object representation
List<Object>
Run Code Online (Sandbox Code Playgroud)
在Map<String, Object>请求时将作为对象返回哪里,因此在应用显式强制转换时出错
因此,而不是使用DataSnapshot#getValue(Class<T> valueType)如
val item : DashboardItem = it.getValue(DashboardItem::class.java)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1617 次 |
| 最近记录: |