Kotlin Android Firebase数据库散列图转换为类
我正在尝试从Firebase数据库获取数据。 断点显示它正在获取数据,但是看起来我没有正确地将其分配给我的class级。
这导致这个例外:
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) } } }
这是数据库导出:
{ "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 // closest to your object representation List
其中Map
将在请求时作为对象返回,因此在应用显式强制转换时出现错误
所以改为使用DataSnapshot#getValue(Class
作为
val item : DashboardItem = it.getValue(DashboardItem::class.java)
- Android – 以下类的超types无法解析 – (Room Persistant Library,Android Library Module)
- Kotlin:具有可空值的BiFunction无法编译
- 在Android Studio中为Kotlin模块配置“build.gradle”
- 由于重复,Kotlin gradle.build ZipException
- Inflator(root = null)布局破坏和Inflator(parentView = obj)无法设置位置
- TestScheduler不起作用(Kotlin + RxJava2 + mockito)
- 已实施/重写方法中的参数的适当名称
- 在android kotlin中,使用步进库将自定义单选按钮值传递给多个片段,以便在摘要页面上使用
- 双向数据绑定与EditText
- Dagger 2命名不能没有@Provides方法提供
- 使用Linkify后,我可以更改TextView链接文本吗?