【问题标题】:Kotlin Firebase: Can't convert object of type java.lang.String to type com.example.Model.perizinanKotlin Firebase:无法将 java.lang.String 类型的对象转换为 com.example.Model.perizinan 类型
【发布时间】:2019-01-31 09:18:42
【问题描述】:

我正在尝试将数据从 Firebase 加载到 RecyclerView,我需要将数据从 Firebase 获取到 ArrayList 但我收到以下错误

com.google.firebase.database.DatabaseException: Can't convert object of type java.lang.String to type com.example.Model.perizinan

这是我的班级

class perizinan(val imageUrl:String, val namakegiatan:String, val keterangan:String, val waktuKegiatan:String, val presensiIzin:String, val tanggalkegiatan:String)
class izin(val perizinan:List<perizinan>)

这是我的代码

fun readFirebaseDatabase(){

    val ref= FirebaseDatabase.getInstance().getReference("Admin")
    ref.addValueEventListener(object: ValueEventListener {

        override fun onCancelled(p0: DatabaseError) {
            Log.e("AdminActivity","cancelled")
        }

        override fun onDataChange(p0: DataSnapshot) {
            val uid = FirebaseAuth.getInstance().uid

            p0.child(uid!!).children.forEach{

                it.children.forEach{

                val posts = ArrayList<perizinan>()

                for (snapshot in it.children) {
                    val post = snapshot.getValue(perizinan::class.java)
                    posts.add(post!!)
                }

                    RecyclerViewAdmin.layoutManager = LinearLayoutManager(this@AdminActivity)
                    RecyclerViewAdmin.adapter = adminAdapter(izin(posts), this@AdminActivity)

                }
            }


        }
    })

}

下面是我的数据库结构

【问题讨论】:

  • Admin节点下的第一个uid是登录用户的uid,第二个和第三个是什么的id?
  • 第二个uid来自消息的发送者,第三个是消息uid,这就像聊天应用程序
  • 所以你想在登录的用户 id 或消息 uid 下获取所有帖子?在第一种情况下,这只是一个。
  • 请在消息 uid 下

标签: firebase kotlin android-recyclerview


【解决方案1】:

您收到该错误是因为您在尝试从数据库中获取 perizinan 对象时使用了错误的引用。要解决这个问题,请更改以下代码行:

val ref= FirebaseDatabase.getInstance().getReference("Admin")

val ref= FirebaseDatabase.getInstance().getReference()
    .child("Admin")
    .child(FirebaseAuth.getInstance().uid)
    .child(senderId)

p0.child(uid!!).children.forEach{ /* ... */ }

p0.children.forEach{ /* ... */ }

【讨论】:

  • 但我无法显示给recyclerview,哈哈哈解决这个问题来其他问题:v
  • 是的,这一直在发生。这听起来像是一个新问题,基本上应该被视为另一个问题,所以请使用 MCVE 发布另一个新问题,以便我和其他 Firebase 开发人员可以帮助您。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-20
  • 2017-03-19
  • 2021-07-16
  • 2018-07-08
  • 1970-01-01
  • 2018-05-22
相关资源
最近更新 更多