android databinding BindingAdapter [xml imageUrl加载图片]

来源:互联网 发布:淘宝助理数据包 编辑:程序博客网 时间:2024/05/29 11:36

来源:https://yanlu.me/android-databinding-tutorial-01/


android:text="@{user.lastName}"

搞定Android DataBinding-00主要是变量的绑定,如果需要加载图片,怎么办呢?
实际上,绑定变量的时候调用的是setter方法(TextView的”android:text”就是调用setText(String)),那么就应该支持绑定到自己指定的方法。

BindingAdapter

绑定一个下载图片的方法:需要图片URL和ImageView来显示,让这个方法能直接调用,最简单的就先定义为static。

@BindingAdapter({"imageUrl"})public static void imageLoader(ImageView imageView, String url) {    Picasso.with(imageView.getContext()).load(url).into(imageView);}

绑定了上面的方法,当一个ImageView设置了”imageUrl”属性,就会调用imageLoader()方法。

BindingAdapter 属性

这样定义好之后,就可以图片下载了。

<ImageView     android:layout_margin="@dimen/activity_horizontal_margin"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:layout_gravity="center"    android:scaleType="centerInside"    app:imageUrl='@{imgUrl ?? "http://0v7.jpg"}'/>

BindingAdapter 再加个参数

当加载文件失败的时候,使用失败的Drawable。
参数的顺序要一致:
{“imageUrl”, “error”}
(ImageView imageView, String url, Drawable error)

@BindingAdapter({"imageUrl", "error"})public static void imageLoader(ImageView imageView, String url, Drawable error) {    Picasso.with(imageView.getContext())            .load(url)            .error(error)            .into(imageView);}

BindingAdapter 参数属性

ImageView定义的属性,可以用来当作imageLoader的函数参数。

<ImageView     android:layout_margin="@dimen/activity_horizontal_margin"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:layout_gravity="center"    android:scaleType="centerInside"    app:imageUrl='@{imgUrl ?? "http://0v7.jpg"}'    app:error="@{@drawable/ic_image_load_error}"/>

end

原创粉丝点击