В чем разница между onCreateViewHolder и onBindViewHolder

«В чем разница между onCreateViewHolder и onBindViewHolder» — вопрос из категории UI и Views, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

onCreateViewHolder вызывается, когда RecyclerView нужен новый ViewHolder (например, при первом создании или при прокрутке за пределы экрана). Здесь создается и возвращается новый экземпляр ViewHolder.

onBindViewHolder вызывается для связывания данных с ViewHolder. Здесь мы обновляем UI элемента списка, используя данные из позиции position.

Пример:

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
    val view = LayoutInflater.from(parent.context).inflate(R.layout.item_layout, parent, false)
    return ViewHolder(view) // Создаем ViewHolder
}

override fun onBindViewHolder(holder: ViewHolder, position: Int) {
    val item = items[position]
    holder.bind(item) // Обновляем данные ViewHolder
}

Ключевое отличие:

  • onCreateViewHolder — создание ViewHolder (редкие вызовы).
  • onBindViewHolder — обновление данных (частые вызовы при скролле).