kako.dev

開発、自作アプリのこと

サーバーにある画像をImageViewで表示する。そしてそれをDataBindしたい。

Drawableにある画像ではなく、サーバーにある画像をImageViewかつDataBindで表示したいことあると思います。 いくつか方法ありますが、簡単な方法を紹介します。  

どうやったら出来るのか?

BindingAdapterで出来ます。

プロジェクトのどこかにBindingAdapter.ktなどそれっぽい名前のファイルを置きます。

そして以下ように書きます。

 

 @BindingAdapter("imageUrl")
 
fun setImageUrl(imageView: ImageView, url: String) {
    val requestOptions: RequestOptions = RequestOptions()
        .dontAnimate()
        .diskCacheStrategy(DiskCacheStrategy.AUTOMATIC)
 
    Glide.with(imageView.context)
        .load(url)
        .apply(requestOptions)
        .into(imageView)
}

  あとは、xml側では以下のように指定します。

<layout>
    <data>
        <variable
            name="imageUrl"
            type="String" />
    </data>
    <LinearLayout
         ... />
         <ImageView
             android:layout_width="200dp"
             android:layout_height="200dp"
             app:imageUrl="@{imageUrl}">
    </LinearLayout>
</layout>

👍 以上です。