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