Binding Adapter with Glide in Android
Overview
Binding adapters are responsible for binding the codes to your layout elements.
Code
class MainActivity : AppCompatActivity()
{
private lateinit var binding : ActivityMainBinding
override fun onCreate(savedInstanceState : Bundle?)
{
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this , R.layout.activity_main)
val post = Post(
"Hello World!" ,
"This is the first line of code that is being written" ,
"https://assets.hongkiat.com/uploads/hello-world-different-programming-languages/r.jpg"
)
binding.post = post
}
}
data class Post(val title : String , val description : String , val url : String)
package com.example.bindingadapters_android
import android.widget.ImageView
import androidx.databinding.BindingAdapter
import com.bumptech.glide.Glide
@BindingAdapter("imageFromUrl")
fun ImageView.imageFromUrl(url : String)
{
Glide.with(this.context).load(url).into(this)
}
<?xml version="1.0" encoding="utf-8"?>
<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="post"
type="com.example.bindingadapters_android.Post" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<ImageView
android:id="@+id/imgPostImage"
imageFromUrl="@{post.url}"
android:layout_width="200dp"
android:layout_height="200dp"
android:scaleType="center"
app:layout_constraintBottom_toTopOf="@+id/tvPostTitle"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:srcCompat="@tools:sample/avatars" />
<TextView
android:id="@+id/tvPostTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{post.title}"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/imgPostImage" />
<TextView
android:id="@+id/tvPostDescription"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="@{post.description}"
android:textSize="16sp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tvPostTitle" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
Comments
Post a Comment