将内存中的位图数据绑定到ImageView

时间:2016-02-09 23:24:59

标签: android android-bitmap android-databinding

我有一个位图内存(通过专有的TCP / IP协议栈从服务器应用程序下载),我想绑定到ImageView。我可以使用setImageBitmap手动绑定图像;如果我使用数据绑定库绑定其他控件,则不会显示图像。如何使用数据绑定库绑定到包含Bitmap对象的属性?

2 个答案:

答案 0 :(得分:19)

您应该可以使用@BindingAdapter执行此操作,例如:

@BindingAdapter("bind:imageBitmap")
public static void loadImage(ImageView iv, Bitmap bitmap) {
   iv.setImageBitmap(bitmap);
}

然后,在您的布局中,您的ImageViewbind:imageBitmap="@{...}",其中...将是一个返回Bitmap的绑定表达式。

答案 1 :(得分:0)

您可以使用android.databinding.adapters.ImageViewBindingAdapter,它包含在数据绑定库中。

在视图模型或视图中绑定的任何内容中,实现如下方法:

@Bindable
public Drawable getDrawable() {
    return new BitmapDrawable(context.getResources(), bitmap);
}

ImageView中,添加以下内容:

android:src="@{viewModel.drawable}"

显然,viewModel变量必须已在您的布局中声明。

这是有效的,因为ImageViewBindingAdapter有这种方法:

@BindingAdapter("android:src")
public static void setImageDrawable(ImageView view, Drawable drawable) {
    view.setImageDrawable(drawable);
}