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 шт):

Автор решения: Sergei Buvaka

Ну я могу ошибаться т.к. не вижу конструктора вашего 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 {}

→ Ссылка