我正在使用RecyclerView,并且使用MvvmCross对Recycler项进行了数据绑定。每个数据绑定对象都包含imageurl,我正尝试使用Picasso图片库加载该图片。我的第一个想法是在ValueConverter中调用毕加索。要使用毕加索,我需要上下文对象,并且不确定是否可以将数据绑定的ImageView作为参数传递给转换器。这是代码...

public class MyImageConverter : IMvxValueConverter
{
    protected override object Convert(object value, object parameter)
    {
        var imageUrl = (string)value;
        // How to optain context or direct access to imageView?
        var imageView = new ImageView(context);
        Picasso.With(context).Load(imageUrl).Into(imageView);
        var bitmap = ((BitmapDrawable)imageView.Drawable).Bitmap;
        return bitmap;
    }
}


和axml片段

<ImageView android:id="@+id/myImageView"
app:MvxBind="Bitmap MyImageConverter(ImageUrl)" />


最好是处理Picasso异步加载,但是我仍然需要访问ImageView项目。

最佳答案

您应该创建一个自定义目标绑定。

参见例如:mvvmcross videoview URL binding

自从我写了最后一个答案以来,事情已经发生了变化,所以这里是当前Android绑定的链接。

https://github.com/MvvmCross/MvvmCross/blob/4.0/MvvmCross/Binding/Droid/MvxAndroidBindingBuilder.cs

10-08 03:15