Самым простым решением было бы передать ссылку на MainActivity
в ImageAdapter
:
// Change ImageAdapter's constructor to
class ImageAdapter(
private val context: Context,
private val list: ArrayList<String>,
private val activity: MainActivity
)
// In MainActivity
adapter = ImageAdapter(applicationContext, imagesUrl, this)
Добавить метод publi c в MainActivity
, который изменяет фон:
fun changeBackground(drawable: Drawable) {
// Change MainActivity's background
}
И вызовите этот метод внутри ImageAdapter
:
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
...
activity.changeBackground()
}
Вы также можете отделить ImageAdapter
от MainActivity
и передать функцию обратного вызова, например (Drawable) -> Unit
, в ImageAdapter
вместо этого. В этом случае MainActivity
передаст лямбду в конструктор ImageAdapter
, а ImageAdapter
вызовет эту лямбду внутри onClickListener
.