使用 KOTLIN 从 firebase 检索数据时出错

Posted

技术标签:

【中文标题】使用 KOTLIN 从 firebase 检索数据时出错【英文标题】:error retrieving data from firebase with KOTLIN 【发布时间】:2020-10-26 11:29:16 【问题描述】:

我正在尝试从 firebase 检索数据,但我得到:

java.lang.ClassCastException:java.util.HashMap 无法转换为 com.android.mlc.model.Usuario

我不知道为什么演员会失败:

private fun listarDatos() 

    databaseReference.child("Usuario").addValueEventListener(object : ValueEventListener
        override fun onCancelled(p0: DatabaseError) 
            Toast.makeText(baseContext, "Failed to load post.",
                Toast.LENGTH_SHORT).show()
        

        override fun onDataChange(dataSnapshot: DataSnapshot) 

            Log.w("Usuarios1", "mehe")
            for (UsuariosFirebase in dataSnapshot.children) 
                  listaUsuarios.add(UsuariosFirebase.value as Usuario) <--- ERROR
      

                arrayAdapterUusuario = ArrayAdapter<Usuario>(this@MainActivity,android.R.layout.simple_list_item_1, listaUsuarios)
                listaV_Usuarios.adapter = arrayAdapterUusuario
            


        
    )

为什么我不能将值 UsuarioFireBase.value 转换为 Usuario

【问题讨论】:

listaUsuarios的类型是什么? 请编辑您的问题并将您的数据库结构添加为屏幕截图。请回复@AlexMamo 似乎是同一种情况。 ***.com/questions/46957319/… 【参考方案1】:

据我所知,您的UsuariosFirebase.value 返回一个Map&lt;String, Object&gt;,确实不能如错误所示转换为Usuario

要从 DataSnapshot 获取数据作为 Usuario 对象,您必须告诉 Firebase 为您进行转换:

listaUsuarios.add(UsuariosFirebase.getValue<Usuario>())

另请参阅getting values from Firebase 上的文档。


以上要求您安装了Kotlin extensions (KTX) for Firebase Realtime Database。如果你很难做到这一点,你也可以使用这个变体,它是对 Java 代码的直接重写:

listaUsuarios.add(UsuariosFirebase.getValue(Usuario::class.java))

【讨论】:

有趣的 getValue 没有类型参数:任何? ...我要哭了 你能试试listaUsuarios.add(UsuariosFirebase.getValue(Usuario::class.java))吗?这是我在其他地方看到的,但我的回答是基于文档的建议。 是的,兄弟,UsuariosFirebase.getValue(Usuario::class.java) 工作正常 :)

以上是关于使用 KOTLIN 从 firebase 检索数据时出错的主要内容,如果未能解决你的问题,请参考以下文章

当有唯一键 Kotlin 时如何从 Firebase 检索孩子

如何根据 Kotlin 中的键值从 firebase 读取数据

Firebase 到 Kotlin 片段

我需要将当前日期与其他数据一起添加到 firebase Realtime 数据库,并在 kotlin android 中检索所有带有日期的数据

如何在 Android Studio 中使用 Kotlin 从 Firebase 中的数据库中获取特定值?

如何使用 Kotlin 在 Android 中处理从 Firebase Remote Config 解析 JSON 的效果方式?