@BindingAdapter使用小结

1.BindingAdapter的原理

  一般我们在布局文件里用到的控件的各种属性,在源码里面都会有它对应的set和get方法,并且也会定义好需要的参数类型,这样我们一旦设置好相应的属性之后代码就自动去匹配对应的set和get方法进行属性设置,而我们有时候也会用到源码里没有定义好的属性,这样方便布局展示,这样就可以用BindingAdapter来解决这个问题。它的作用就是可以让我们自己定义想要用到的属性,然后给这个属性设置set方法设置到页面中显示

2.BindingAdapter使用场景

  • 项目里经常用到的根据后台返回显示不同颜色,可选颜色不只两种的
  • 图片的加载
  • 自定义控件内容显示问题
  上面列举的是我目前遇到的或者觉得比较好用的场景,下面具体列举一下如何使用和使用中间需要注意的事项

3.写适配器

(1)根据后台返回显示不同颜色

@BindingAdapter("bind:textColor")
fun TextView.textColor(style:Int){
   when(style){
      1-> this.setTextColor(resources.getColor(R.color.yt_color_text_yellow))
      2-> this.setTextColor(resources.getColor(R.color.yt_color_blue_4663FF))
      3-> this.setTextColor(resources.getColor(R.color.yt_color_black))
   }
}
  注意:上面这段代码中bind:***应该和TextView.***这里的名字一致,这样才能让代码清晰的找到对应的自定义方法

(2)图片的加载

@BindingAdapter("src")
fun SimpleDraweeView.src(url:String?){
   FrescoUtils.displayNetImage(this, url)
}

(3)自定义控件内容显示

一个自定义控件

@BindingAdapter("bind:type")
fun OrderStatusView.setType(text:String){
    setStatusType(text)
}

@BindingAdapter("bind:topText")
fun OrderStatusView.setTopText(num: Int){
    setStatusDotNum(num)
}
  上面图片定义了一个控件,对里面的两个方法setStatusTypesetStatusDotNum进行了适配器绑定

3.具体使用举例

<com.example.xxh.widget.OrderStatusView
                    android:id="@+id/osvExclusive1"
                    bind:type="@{`中国`}"
                    bind:topText="@{data.Count}"
                    android:layout_width="wrap_content"
                    android:layout_height="40dp"
                    android:gravity="top" />
  这是用第三个自定义控件进行使用举例
  注意:使用时type我们设置的参数是String,按照平常的习惯很容易就直接写了bind:type="中国",这样是不对的,会导致找不到这个type,就算是直接设置值也要吧@{}加上
  以上是个人开发过程中的小总结,有错欢迎指正
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值