@BindingAdapter无法与Android Kotlin库一起使用

时间:2019-02-07 21:19:36

标签: android kotlin android-databinding

我有这个BindingAdapter可以在我的模块中使用Glide加载图像

import android.widget.ImageView
import androidx.databinding.BindingAdapter
import com.bumptech.glide.Glide

@BindingAdapter("imageUrl")
fun loadImage(view: ImageView, imageUrl: String) {
    Glide.with(view)
        .load(imageUrl)
        .into(view)
}

我试图使用这样的适配器

   <ImageView
            ...
            app:imageUrl="@{`http://pngimg.com/uploads/alfa_romeo/alfa_romeo_PNG75.png`}"
            ... />

但正在得到

  

**** /数据绑定错误**** msg:在android.widget.ImageView上找不到参数类型为java.lang.String的属性“ app:imageUrl”的设置器。

奇怪的是,当我将BindingAdapter的{​​{1}}转换为Java时,它起作用了。

Kotlin

注意:仅public class ImageViewBindingAdapter { @BindingAdapter("imageUrl") public static void setImageUrl(ImageView view, String url) { Glide.with(view) .load(url) .into(view); } } 模块存在此问题。 App模块与library文件完美配合。

我做错了什么?

3 个答案:

答案 0 :(得分:1)

@BindingAdapter("imageUrl") 

代替

@BindingAdapter("app:imageUrl")

答案 1 :(得分:0)

重复项:https://stackoverflow.com/a/52668004/1607169

TL; DR:

apply plugin: 'kotlin-kapt'

答案 2 :(得分:0)

你的代码应该是这样的

object BindUtil {
  @JvmStatic
  @BindingAdapter("app:imageUrl")
  fun imageUrl(view: ImageView, imageUrl: String?) {
      Glide.with(view)
       .load(imageUrl)
       .into(view)
  }
}