Работа с ViewHolder с Kotlin synthetic

Две разных реализации одного и того же:

class ViewHolder(v: View) : RecyclerView.ViewHolder(v) {
    val textView: TextView = v.findViewById(R.id.textView)

    fun bind(model: Model) {
        textView.text = model.name
    }
}

class ViewHolder(v: View) : RecyclerView.ViewHolder(v) {
    fun bind(model: Model) {
        itemView.apply {
            textView.text = model.name
        }
    }
}

Для фрагментов и Activity вызов View элементов через synthetic кэширует ссылки (т.е. внутри только один раз происходит findViewById) а внутри ViewHolder как это работает? Все ли хорошо? или каждые раз когда мы скролим происходит findViewById?


Ответы (1 шт):

Автор решения: SKULL

На медиуме написано так

Kotlin Android Extensions версии 1.1.4 Начиная с этой, новой версии Kotlin, в Android Extensions включили новые интересные функции: кэш в любом классе (включая ViewHolder)

Единственное требование заключается в том, чтобы класс имплементировал интерфейс LayoutContainer.

Наверное это значит, что все хорошо:) Но deprecated (лучше по старинке, findViewById)

→ Ссылка