companion object {
@JvmStatic
@BindingAdapter(value = ["placeHolder", "error", "imageUrl"], requireAll = false)
fun imageUrl(imageView: ImageView, placeHolder:Drawable?, error:Drawable?, url: String?) {
Glide.with(imageView)
.load(url)
.apply(RequestOptions()
.placeholder(placeHolder)
.error(error))
.into(imageView)
这样修改后,xml中不加上所有的属性,最后问题得以解决。
通过这个bug告诉我们,在java代码转成kotlin代码的时候,要注意在函数的参数上加上"?"空安全操作符。
@JvmStatic
@BindingAdapter("imageurl")
fun loadImage(imageView: ImageView, url: String) {
Glide.wit...
@BindingAdapter("imageFromUrl")
fun bindImageFromUrl(view: ImageView, imageUrl: String?) {
if (!imageUrl.isNullOrEmpty()) {
Glide.with(view.context)
.load(imageUrl)
.transition(DrawableTransitionOpti..
所以通过改变绑定的数据,这个适配器就被触发.它的函数体就会启动执行
在java中直接声明一个静态方法加上@BingdAdapter("*****")就可以让函数体完美跑起来,但是在kotlin好像跑不了?
加上@JvmStatic注解也不行,头大
kotlin中只要把放在函数放到最外层就OK啦
如果报...
<?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.
BindingAdapter的学习可以去看官网,绑定适配器
在学习中,遇到一个问题,查了好多资料也没解决,无意之间发现了解决方法,记录一下
首先定义BindingAdapter方法,这个可以放在单独的文件里
@BindingAdapter("app:error")
fun error(text: TextView, error: String) {
text.text = error
也可以定义成这样
class BindingAdapterUtil {
companion obje
BindingAdapter
BindingAdapter用来设置布局中View的自定义属性,当使用该属性时,可以自定义其行为。
@BindingAdapter("android:bufferType")
public static void setBufferType(TextView view, TextView.BufferType bufferType) {
view.setTex...
使用Android databinding的时候使用了@BindingAdater自定义属性之后一直有这个application
namespace for attribute {} will be ignored问题,虽然不报错,但是总觉得不爽
将 @BindingAdapter("bind:colorTint") 改成@BindingAdapter({"colorTint"})就ok了。