#android #kotlin
#Android #kotlin
Вопрос:
Я новичок в Kotlin и Android Studio. Я пытаюсь заставить режим рециркуляции работать должным образом, но я сталкиваюсь с проблемой при попытке использовать класс адаптера.
Я попытался взглянуть на точки останова. но, похоже, это срабатывает в самой первой строке, где определяется класс. (итак, class OrganizationsAdapter … и т.д.) и после этого он пропускает весь класс, он даже не вводит его.
Я также не получаю никаких исключений.
Класс адаптера
class OrganisationsAdapter(
private val myDataset: Array<String>
) : RecyclerView.Adapter<OrganisationsAdapter.MyViewHolder>() {
class MyViewHolder(
val textView: TextView
) : RecyclerView.ViewHolder(textView) {
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
var cell = LayoutInflater.from(parent.context).inflate(R.layout.example_item, parent, false)
val textView = cell.findViewById<TextView>(R.id.organisation_name)
return MyViewHolder(textView)
}
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
holder.textView.text = myDataset[position]
}
override fun getItemCount() = myDataset.size
}
** Строка, которую я использую для вызова класса **
recyclerViewOrganisationFragment.adapter = OrganisationsAdapter(Array(getTopics().size) { i -> getTopics()[i].name })
Комментарии:
1. Вам нужно передать ArrayList в конструкторе адаптера, вы передаете размер
2. Вы подключили layout manager к RecyclerView?
Ответ №1:
Вам нужно передать раздутый макет ViewHolder вместо TextView
пример:
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
var cell = LayoutInflater.from(parent.context).inflate(R.layout.example_item, parent, false)
return MyViewHolder(cell)
}
class MyViewHolder(
val itemView: View
) : RecyclerView.ViewHolder(itemView) {
//TODO get textview here itemView.findViewByID
}
Соответствующим образом обновите viewholder с помощью textview и т.д.,
Ответ №2:
Спасибо, Lakhwinder.
«Вам нужно передать ArrayList в конструкторе адаптера, вы передаете размер»