android - Android Kotlin Firebase 实时数据库:RecyclerView 显示空结果
问题描述
我RecyclerView
在使用虚拟数据时工作,但在连接到 Firebase 数据库时显示 RecyclerView 的空结果。请帮助解决这个问题。
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
var adapter = qponAdapter(generateData())
val layoutManager = LinearLayoutManager(context)
qponRecyclerView?.layoutManager = layoutManager
qponRecyclerView?.itemAnimator = DefaultItemAnimator()
qponRecyclerView?.adapter = adapter
adapter.notifyDataSetChanged()
}
private fun generateData(): ArrayList<Company> {
var companyReg = Company(name = "qqqqq", br = "", country = "", city = "", address = "", tel = "", value = "", qponQuantity = 0, email = "", advApproved = "false", advPassword = "", startDate = "", endDate = "", conditions = "", postApproved = "false", order = 10000, authPhone = "",nodeID = "")
companyList.add(companyReg)
companyList.add(companyReg)
companyList.add(companyReg)
companyList.add(companyReg)
companyList.add(companyReg)
}
它运行良好并在 Recyclerview 中显示 5 条记录。
private fun generateData(): ArrayList<Company> {
val postListener = object : ValueEventListener {
override fun onDataChange(dataSnapshot: DataSnapshot) {
// Get Post object and use the values to update the UI
//val post = dataSnapshot.getValue<Post>(Post::class.java!!)
// ...
val td = dataSnapshot.value as HashMap<*, *>
for (key in td.keys){
val post = td[key] as HashMap<*, *>
val companyReg = Company(name = "", br = "", country = "", city = "", address = "", tel = "", value = "", qponQuantity = 0, email = "", advApproved = "false", advPassword = "", startDate = "", endDate = "", conditions = "", postApproved = "false", order = 10000, authPhone = "",nodeID = "")
companyReg.name = post["Name"].toString()
companyReg.address = post["Address"].toString()
companyReg.country = post["Country"].toString()
companyReg.city = post["City"].toString()
companyReg.tel = post["Tel"].toString()
companyReg.value = post["qponValue"].toString()
//companyReg.qponQuantity = qponQuantity
companyReg.email = post["Email"].toString()
companyReg.advPassword = post["advPassword"].toString()
companyReg.startDate = post["startDate"].toString()
companyReg.endDate = post["endDate"].toString()
companyReg.conditions = post["Conditions"].toString()
companyReg.postApproved = post["PostApproved"].toString()
companyReg.advApproved = post["advApproved"].toString()
//companyReg.order = post["Order"] as! Int
companyReg.authPhone = post["authPhone"].toString()
companyReg.nodeID = key.toString()
println(companyReg.nodeID)
println(companyReg.address)
companyList.add(companyReg)
}
}
override fun onCancelled(databaseError: DatabaseError) {
// Getting Post failed, log a message
Log.w(TAG, "loadPost:onCancelled", databaseError.toException())
// ...
}
}
myRef.addValueEventListener(postListener)
return companyList
}
它连接到 Firebase 数据库,但 RecyclerView 显示 0 记录。我确信它正在连接到数据库,因为它会打印出控制台中的每条记录。
解决方案
推荐阅读
- java - 无法在在线编辑器上导入 org.Json
- python - pd.json_normalize 用于将 JSON 嵌套到 Dataframe
- sql - 在单行中显示多行
- python - 在 python 中,如何写入文件中的特定位置?
- c# - 通过重嵌套 JSON 递归
- docker - How to do multiple docker builds on single sbt project?
- javascript - Why does Axios not seem to receive the Access-Control-Request-* headers even though they are being sent?
- matlab - Using Matlab to write a column vector in matlab
- html - 向左水平滚动
- kotlin - Kotlin:遍历集合中的每一对(或通常固定大小的子集)