Adapter связывает данные со списком: onCreateViewHolder создаёт holder, onBindViewHolder заполняет данными; ViewHolder кэширует ссылки на дочерние View.
Разбор
- Не вызывайте findViewById в onBind — кэшируйте в ViewHolder.
- getItemId/stable ids помогают анимациям при правильной модели.
- notifyDataSetChanged дёшев в написании, дорог в работе — лучше DiffUtil.
- Клики обычно ставят в bind или через callback интерфейс Adapter → UI.
Итог
ViewHolder + точечные notify/DiffUtil = плавный список.