绑定(bind)适配器:

@BindingAdapter("src")
fun loadImage(imageView: ImageView, src: Any) {

    if (src is Int || src is String || src is Drawable) {
        Glide.with(imageView.context).load(src).into(imageView)
    }
}

xml中的Imageview:
<androidx.appcompat.widget.AppCompatImageView
    android:layout_width="200dp"
    android:layout_height="300dp"
    app:src="@{model.image}" />

查看模型:
val image = MutableLiveData<Drawable>()

init {
    // image.value = How to initialize this?
}

方案:
我想将imageview与从服务器收到的drawable绑定(bind)在一起。我想设置一个可绘制的占位符,直到从服务器获取图像。

上面的代码错误:



注意:
1.请提供遵循MVVM的解决方案。 ( View 模型中没有上下文)

最佳答案

您可以在Glide中设置占位符,而不是在ViewModel中进行处理。只需以下一行即可满足您的目的。

Glide.with(imageView.context).load(src).placeholder(R.drawable.placeholder).into(imageView)

参见documentation here

关于android - 如何在viewmodel中将imageview与drawable进行数据绑定(bind)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57243160/

10-11 22:28
查看更多