Я учусь кодировать и пытаюсь следовать серии сообщений Kotlin Messenger на YT «давайте создадим это приложение».
Я застрял в реализации представления переработчика с использованием 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» ... и т. Д.
Генерируемый класс 'Farm' очень прост:
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
}