为什么我的 data-binding 注释(@BindingAdapter("imageURL"))不起作用?
Why my data-binding annotation(@BindingAdapter("imageURL")) doesn't work?
我已经编写了我的自定义 recyclerView,但遇到了问题。但是当我为我的 imageView 写一个注释来标记 setter 时,我遇到了编译错误。
这是源代码和错误。
错误:
找不到接受参数类型 'java.lang.String' 的 的 setter
如果绑定适配器提供 setter,请检查适配器是否正确注释以及参数类型是否匹配。
Setter代码:
import android.widget.ImageView
import androidx.databinding.BindingAdapter
import com.squareup.picasso.Callback
import com.squareup.picasso.Picasso
import java.lang.Exception
class BindingAdapters {
@BindingAdapter("imageURL")//compilation error
fun setImageURL(imageView: ImageView, URL: String?) {
imageView.alpha = 0f
try {
Picasso.get().load(URL).noFade().into(imageView, object : Callback {
override fun onSuccess() {
imageView.animate().setDuration(300).alpha(1f).start()
}
override fun onError(e: Exception) {
}
})
} catch (ignored: Exception) {
}
}
}
ImageViewxml代码:
<data>
<variable
name="eventShow"
type="course.ru.qsearcher.models.Event" />
</data>
........
<com.makeramen.roundedimageview.RoundedImageView
android:id="@+id/imageEvent"
android:layout_width="@dimen/_70sdp"
android:layout_height="@dimen/_100sdp"
android:layout_marginStart="@dimen/_10sdp"
app:imageURL="@{eventShow.imagePath}"
android:scaleType="centerCrop"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:riv_corner_radius="@dimen/_4sdp" />
事件是一个数据 class,其中包含事件标题、描述、图片 URL 等字段。
сode
xml usage
url-field
将android:imageURL
更改为imageURL
,android:
前缀用于内置属性,如android:text
。
并在 ImageView
中像 imageURL
或 app:imageURL
一样使用它。
我没有将 Kotlin 插件添加到我的 gradle 文件中
apply plugin: "kotlin-kapt"
解决了我的问题
我已经编写了我的自定义 recyclerView,但遇到了问题。但是当我为我的 imageView 写一个注释来标记 setter 时,我遇到了编译错误。 这是源代码和错误。
错误:
找不到接受参数类型 'java.lang.String' 的
如果绑定适配器提供 setter,请检查适配器是否正确注释以及参数类型是否匹配。
Setter代码:
import android.widget.ImageView
import androidx.databinding.BindingAdapter
import com.squareup.picasso.Callback
import com.squareup.picasso.Picasso
import java.lang.Exception
class BindingAdapters {
@BindingAdapter("imageURL")//compilation error
fun setImageURL(imageView: ImageView, URL: String?) {
imageView.alpha = 0f
try {
Picasso.get().load(URL).noFade().into(imageView, object : Callback {
override fun onSuccess() {
imageView.animate().setDuration(300).alpha(1f).start()
}
override fun onError(e: Exception) {
}
})
} catch (ignored: Exception) {
}
}
}
ImageViewxml代码:
<data>
<variable
name="eventShow"
type="course.ru.qsearcher.models.Event" />
</data>
........
<com.makeramen.roundedimageview.RoundedImageView
android:id="@+id/imageEvent"
android:layout_width="@dimen/_70sdp"
android:layout_height="@dimen/_100sdp"
android:layout_marginStart="@dimen/_10sdp"
app:imageURL="@{eventShow.imagePath}"
android:scaleType="centerCrop"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:riv_corner_radius="@dimen/_4sdp" />
事件是一个数据 class,其中包含事件标题、描述、图片 URL 等字段。
сode
xml usage
url-field
将android:imageURL
更改为imageURL
,android:
前缀用于内置属性,如android:text
。
并在 ImageView
中像 imageURL
或 app:imageURL
一样使用它。
我没有将 Kotlin 插件添加到我的 gradle 文件中
apply plugin: "kotlin-kapt"
解决了我的问题