Xamarin ListView图像在滚动

时间:2018-05-23 08:21:35

标签: c# android xamarin xamarin.forms xamarin.android

我使用的是Xamarin Forms和Xamarin Android。

我已经使用此代码读取一些文件(存储在Android手机中)

public ImageSource Photo { get; set; }

public void LoadPhoto()
{
    var t = Android.Net.Uri.Parse("URI_OF_THE_PHOTO");
    var otherStream = Android.App.Application.Context.ContentResolver.OpenInputStream(t);
    Photo = Xamarin.Forms.ImageSource.FromStream(() => otherStream);
}

然后,在我的XAML页面中,在ListView的ViewCell中我有这个Image控件:

<Image Source="{Binding Photo}"></Image>

Eveything工作正常,图像(大约50张)正确加载并显示在ListView内。

但是当我滚动ListView并且图像离开屏幕时,当我向后滚动它们时,它们就会空了!图像突然消失......消失!!!

我发现了几个与此类似的StackOverflow案例,但我无法使用这些解决方案,它们似乎不适用于我的案例。

请帮助,我已经遇到了这个问题!

3 个答案:

答案 0 :(得分:0)

您可以阅读此linkFFImageLoading将解决您的问题。

答案 1 :(得分:0)

在xamarin格式3.5..i中使用可绑定的堆栈布局。.解决了相同的问题。.

答案 2 :(得分:0)

我有类似的问题,在Google待了一段时间后,问题解决了。(也许这个答案为时已晚)

public ImageSource ByteToImageSource(byte[] byteArrayIn)
{
    //this way, image in ListView will disapear on scroll
    //var stream = new MemoryStream(byteArrayIn);
    //var retSource = ImageSource.FromStream(() => stream);

    // this way is fine
    var retSource = ImageSource.FromStream(() => new MemoryStream(byteArrayIn));
    return retSource;
}

所以我认为在您的情况下,您可以这样做:

Photo = Xamarin.Forms.ImageSource.FromStream(() => Android.App.Application.Context.ContentResolver.OpenInputStream(t));