我无法像使用MvvmCross绑定图像一样缓存图像

时间:2015-10-16 09:54:25

标签: android xamarin mvvmcross picasso image-caching

我是Xamarin Android应用程序的新手。我使用Picasso组件来缓存和下载图像,它工作正常。
Picasso.With (this.Activity).Load ("Here I pass Url").Into (imageview); 现在我使用MvvmCross绑定,如:

<Mvx.MvxImageView
   android:layout_width="120dp"
   android:layout_height="140dp"
   android:id="@+id/ProductImageView"
   android:scaleType="fitXY"
   local:MvxBind="ImageUrl URL" />

这里的URL是我在Viewmodel中设置的字符串。我的问题是,它下载图像但不能像picasso那样缓存该图像。任何人都建议我该怎么做? 如何使用Picasso绑定和缓存图像?

2 个答案:

答案 0 :(得分:4)

没有关于MvxImageView magic - 它的类是一个继承自ImageView的类,并且公开了一个可以在绑定中使用的public string ImageUrl属性。

您不必使用MvxImageView - 您可以创建自己的PicassoImageView并公开属性:

private string _i;
public string ImageUrl 
{
    get { return _i; }
    set {
        if (_i == value) return;
        _i = value;
        if (string.IsNullOrEmpty(value)) {
           // what do you want to do here? clear the view? use a placeholder?
           return;
        }
        Picasso.With (this.Context).Load (_i).Into (this);
    }
}

那种事情应该有用......

...如果你博客/写下你如何开展这项工作以及你在学习过程中学到了什么(或者如果你发布了其他人可以使用的nuget包),还有奖励积分。

答案 1 :(得分:2)

您可以使用Picasso缓存图像,而无需在任何ImageViewer中加载它,如下所示:

Picasso. with(Context). load(ImageFile.Url). into(null);

但我不确定你以后如何使用它。

您可以尝试自己的缓存实现,这很简单,请查看article