CustomAdapter не работает | Kotlin
Написал кастомный адаптер:
private var list = mutableListOf<Book>()
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.card, parent, false);
log(list.size.toString())
return ViewHolder(view);
}
override fun getItemCount(): Int = list.size
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.bind(list[position])
}
fun set(l: MutableList<Book>) {
this.list.clear()
this.list.addAll(l);
notifyDataSetChanged()
}
В фрагменте вызываю:
val ad = listOf<Book>(
Book("1","11","12"),
Book("2", "21","22")
) as MutableList<Book>
recyclerRecommended.apply {
layoutManager = LinearLayoutManager(context)
adapter = DataAdapter(ad)
}
Но в логкат не выходит сообщения о запуске функции. Что может быть не так?
fun log(message:String){
Log.i("PARSER", message)
}
Ответы (1 шт):
Ну я могу ошибаться т.к. не вижу конструктора вашего Adapter-a, но вот тут
private var list = mutableListOf<Book>()
вы создали пустой список. И ничем его не заполнили, а значит у вас не будет элементов в адаптере.
У вас есть метод set() он написан правильно, так вот добавляйте элементы с помощью этого метода, а не в конструктор.
Если же вы решили все же добавлять элементы через конструктор, то вы должны убрать ваш private var list = mutableListOf<Book>() и использовать тот лист, что есть в аргументах конструктора
class Adapter (private val list : List<Book>)
либо же сетить ваш private var list = mutableListOf<Book>() в блоке init {}