将数据从 Firebase(实时数据库)检索到列表 (Kotlin) 中



Firebase 中的实时数据库结构

我想在"mifkada"中浏览整个用户,并将它们作为 BlogPost 对象添加到列表中:

class BlogPost (
var namerv: String,
var gafrv: String,
var placerv: String,
var phonerv: String,
var notesrv: String
) {
constructor() : this("", "", "", "", "") {}
}

我尝试使用 for 循环执行此操作,但它无法按照我编写的方式工作

class DataSource{
companion object{
fun createDataSet(): ArrayList<BlogPost>{

var databaseMifkada = FirebaseDatabase.getInstance().getReference("mifkada")
val list = ArrayList<BlogPost>()
val postListener = object : ValueEventListener {
override fun onDataChange(dataSnapshot: DataSnapshot) {
if(dataSnapshot!!.exists()){
list.clear()
for (e in dataSnapshot.children){
val post = e.getValue(BlogPost::class.java)
list.add(post!!)
}
}
}
override fun onCancelled(databaseError: DatabaseError) {
// Getting Post failed, log a message
Log.w(TAG, "loadPost:onCancelled", databaseError.toException())
}
}
databaseMifkada.addValueEventListener(postListener)
return list
}
}
}

构造函数的值与数据库值的名称不匹配

class BlogPost (
var namerv: String,
var gafrv: String,
var placerv: String,
var phonerv: String,
var notesrv: String
) {
constructor() : this("", "", "", "", "") {}
}

应该是

class BlogPost (
var name: String,
var gaf: String,
var place: String,
var phone: String,
var notes: String
) {
constructor() : this("", "", "", "", "") {}
}

你需要有相同的名称,因为当你这样做时

val post = e.getValue(BlogPost::class.java)

它将在引用下查找这些字段名称,如果无法访问,则无法获取这些值

最新更新