Работа с 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)