我正在尝试将数据从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)
}
}
}
})
}
下面是我的数据库结构:
答案 0 :(得分: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{ /* ... */ }