Abhängigkeiten in build.gradle hinzufügen.

implementation "io.coil-kt:coil:1.1.1"

Internet-Permission in AndroidManifest.xml

<uses-permission android:name="android.permission.INTERNET" />

Ein BindingAdapter für die ImageView schreiben, der Coil zum Laden des Bildes verwendet

@BindingAdapter("imageUrl")
fun bindImage(imageView : ImageView, imageUrl : String?) {
    imageUrl?.let {
        val imgUri = imageUrl.toUri().buildUpon().scheme("https").build()
        imageView.load(imgUri)
    }
}

Im Layout-File das ViewModel an eine Variable binden.

<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">
    <data>
        <variable
            name="viewModel"
            type="com.example.android.marsphotos.overview.OverviewViewModel" />
    </data>

und diese in der durch den BindingAdapter implementieren Methode aufrufen: app:imageUrl="@{viewModel.photos.imgSrcUrl}"

Im Fragemnt in der Methode onCreateView() die generierte Binding-Klasse verwenden, um das Layout zu inflaten, den LifecycleOwner und das ViewModel hinzuzufügen:

        val binding = GridViewItemBinding.inflate(inflater)
        binding.lifecycleOwner = this
        binding.viewModel = viewModel