Какие знаешь Делегаты для интерфейсов

«Какие знаешь Делегаты для интерфейсов» — вопрос из категории Kotlin, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Android часто используются делегаты для упрощения работы с интерфейсами. Вот основные:

  1. View.OnClickListener – обработка кликов:
button.setOnClickListener { view -> /* действие */ }
  1. RecyclerView.Adapter – делегаты для элементов списка:
val adapter = ListAdapter(delegate1, delegate2)
  1. ActivityResultContracts – обработка результатов:
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result -> }
  1. TextWatcher – отслеживание изменений текста:
editText.addTextChangedListener(object : TextWatcher {
    override fun afterTextChanged(s: Editable?) {}
})
  1. LifecycleObserver – реакции на изменения жизненного цикла.

Делегаты помогают избежать boilerplate-кода, особенно с Kotlin's by. Например:

class MyActivity : AppCompatActivity(), OnClickListener by ClickListenerDelegate()