美文网首页Android开发Android开发Android技术知识
Android开发教程 - 使用Data Binding(七)使

Android开发教程 - 使用Data Binding(七)使

作者: 罗伊德666 | 来源:发表于2018-09-11 13:43 被阅读7次

    什么是BindingAdapter

    BindingAdapter用来设置布局中View的自定义属性,当使用该属性时,可以自定义其行为。

    下面是一个简单的例子:

    @BindingAdapter("android:bufferType")
    public static void setBufferType(TextView view, TextView.BufferType bufferType) {
        view.setText(view.getText(), bufferType);
    }
    

    当一个方法加上@BindingAdapter注解后,就定义了一个BindingAdapter,注意方法的第一个参数是需要绑定到的View,第二个参数是绑定的属性值。

    当定义完成后,此时我们就可以在布局的View中使用该属性,举例如下:

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:bufferType="normal"
        />
    

    当TextView中加入了android:bufferType="normal"后,setBufferType()方法就会被调用。

    当自定义其它一些属性时,也遵循一样的规则。

    自定义图片加载的BindingAdapter

    由于BindingAdapter的特性,我们就可以为ImageView自定义一个BindingAdapter,从而大幅简化图片加载的过程。

    第一步,我们先新建一个ImageBindingAdapter的类,图片相关的BindingAdapter可以都定义在这个类里面:

    public class ImageBindingAdapter {
    
        @BindingAdapter("imageUrl")
        public static void bindImageUrl(ImageView view, String imageUrl){
            RequestOptions options =
                    new RequestOptions()
                    .centerCrop()
                    .dontAnimate();
    
            Glide.with(view)
                    .load(imageUrl)
                    .apply(options)
                    .into(view);
        }
    
    }
    

    定义好后,我们就可以直接在布局中使用这个属性了:

    <ImageView
        android:layout_width="180dp"
        android:layout_height="180dp"
        app:imageUrl="@{user.photo}"
        />
    

    仅仅简单的一行代码,就可以进行网络图片的加载了,是不是感觉这个世界简单了很多?

    除了这种单个参数的BindingAdapter,它也支持多个参数,这也是BindingAdapter强大的地方。

    总结

    使用BindingAdapter可以大大简化一些重复代码,本文主要介绍了加载图片上的使用,你可以举一反三,用在更多的场景中使用,比如加载列表的数据等,这样做以后也可以使您的代码更加清晰高效。

    相关文章

      网友评论

        本文标题:Android开发教程 - 使用Data Binding(七)使

        本文链接:https://www.haomeiwen.com/subject/ipcugftx.html