我有一个带有图片网址的数据源,通常我用
处理 <Mvx.MvxImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scaleType="fitXY"
local:MvxBind="ImageUrl PosterThumbUrl" />
但是,某些记录没有图像(PosterThumbUrl
为空)。所以,理想情况下我希望有这样的东西:
<Mvx.MvxImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scaleType="fitXY"
local:MvxBind="ImageUrl DefaultImage(PosterThumbUrl, 'back_no_image.png')" />
(即,如果网址为空,则放置可绘制的后备图像)。
从我看到的,我需要创建数据转换器,但我不知道如何处理DataConverter:默认图像(自动)加载以及手动@drawable图像处理。
我想出的是(如果网址为空,则在数据转换器内部):
return BitmapFactory.DecodeResource(topActivity.Activity.Resources, GetResourceId(defaultImage, "drawable", topActivity));
// otherwise
return base.Convert(value, targetType, parameter, culture);
但在这种情况下它没有处理默认的网址加载。
那么,有什么想法吗?谢谢!
答案 0 :(得分:0)
可以使用ValueConverter
https://www.mvvmcross.com/documentation/fundamentals/value-converters
由于ImageUrl
的类型为字符串,因此我们将使用返回字符串MvxValueConverter<string, string>
的值转换器。
public class StringValueConverter : MvxValueConverter<string, string>
{
protected override string Convert(string value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null || value == string.Empty)
return parameter as string;
return value;
}
}
属性parameter
包含布局文件中设置的默认值:
<Mvx.MvxImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scaleType="fitXY"
local:MvxBind="ImageUrl StringValue(PosterThumbUrl, 'back_no_image.png')" />