【发布时间】:2019-10-16 03:00:49
【问题描述】:
我正在学习编码并尝试关注 YT 上的 Kotlin messenger 系列“让我们构建那个应用程序”。
我一直坚持使用 Groupie 实现回收器视图,并且无法完全复制代码,因为该系列使用的是较旧的 firebase 数据库,而我正在使用 firestore。
我快到了,但我的“切换农场视图”的“农场”列表将每个项目复制 6 次,这是集合中的文档数量(即,我得到每个农场名称的 6 个副本,而不是只需 1)。
我认为这一定很容易解决,但我想不通。
我认为问题出在这里:
private fun fetchFarms() {
val db = FirebaseFirestore.getInstance()
val adapter = GroupAdapter<GroupieViewHolder>()
db.collection("farms").get().addOnSuccessListener { result ->
for (document in result) {
result.forEach {
Log.d("SwitchFarmActivity","Loaded document: ${document.id} => ${document.data}")
val farm = it.toObject(Farm::class.java)
adapter.add(FarmItem(farm))
}
}
recyclerview_switchfarm.adapter = adapter
}
}
日志打印输出实际上是每个项目返回两个,然后是一系列的 'ViewPostIme 指针 0' 'ViewPostIme 指针 1' 'ViewPostIme 指针 0' 'ViewPostIme 指针 1'.. 等
生成的“农场”类非常基础:
data class Farm(val farmId: String, val farmName: String, val ownerId: String) {
constructor():this("","","")
}
这是 FarmItem 类:
class FarmItem(val farm: Farm): Item<GroupieViewHolder>() {
override fun bind(viewHolder: GroupieViewHolder, position: Int) {
viewHolder.itemView.farmName_textView_switchFarm.text = farm.farmName
}
override fun getLayout(): Int {
return R.layout.farm_row_switch_farm
}
【问题讨论】:
标签: android firebase kotlin android-recyclerview google-cloud-firestore