Kotlin jetpack BindingAdapter 简单的给布局添加自定义属性

BindingAdapter 可以给布局加上自定义的注解进行自定义的处理。非常的好玩。

上布局文件




    

        

        
    

    

        
        

        

        

        
        

    

Kotlin jetpack BindingAdapter 简单的给布局添加自定义属性_第1张图片

不出意外地个话,阁下应该没见过这些字段

Kotlin jetpack BindingAdapter 简单的给布局添加自定义属性_第2张图片

因为这是自定义的

打开kapt

Kotlin jetpack BindingAdapter 简单的给布局添加自定义属性_第3张图片

    implementation 'com.squareup.picasso:picasso:2.71828'

使用 picasso加载网络图片

新建

ImageViewBindingAdapter.kt

类 并只有这么些内容

package com.anguomob.jecpack.biningadapter

import android.graphics.Color
import android.text.TextUtils
import android.widget.ImageView
import androidx.databinding.BindingAdapter
import com.anguomob.jecpack.R
import com.squareup.picasso.Picasso

//加载网络图片
@BindingAdapter("image")
fun setImage(iv: ImageView, url: String) {
    if (TextUtils.isEmpty(url).not()) {
        Picasso.get().load(url).placeholder(R.mipmap.ic_launcher)
            .into(iv)
    } else {
        iv.setBackgroundColor(Color.GRAY)
    }
}

//加载本地图片
@BindingAdapter("image")
fun setImage(iv: ImageView, resId: Int) {
    iv.setImageResource(resId)
}


//当网络图片为空的时候 加载本地图片
@BindingAdapter(value = arrayOf("netWorkImage", "defaultLocalImage"), requireAll = false)
fun setImage(iv: ImageView, url: String?, resId: Int) {
    if (TextUtils.isEmpty(url).not()) {
        Picasso.get().load(url).placeholder(R.mipmap.ic_launcher)
            .into(iv)
    } else {
        iv.setImageResource(resId)
    }
}

第一个 

image 注解 就是 加载网络图片。第二个是加载本地图片

第三个是

当网络图片为空的时候 加载本地图片

非常的好玩。

你可能感兴趣的:(002android,kotlin,android,android,studio)