Xamarin.forms OutOfMemory在listview中使用图像时出错

Xamarin.forms OutOfMemory在listview中使用图像时出错,listview,out-of-memory,xamarin.forms,Listview,Out Of Memory,Xamarin.forms,我有一个列表视图,我想显示从URL加载的每个项目的图像。如果我使用ImageCell作为数据模板,它将加载一次,然后如果我尝试再次加载,我将得到一个OutOfMemory错误 接下来,我在这里尝试了Xamarin表单简介页面中的代码,以创建自定义的ViewCell 类MyViewCell:ViewCell { 公共MyViewCell() { var image=newmyimage { 水平选项=布局选项。开始 }; SetBinding(image.SourceProperty,新绑定(“I

我有一个列表视图,我想显示从URL加载的每个项目的图像。如果我使用ImageCell作为数据模板,它将加载一次,然后如果我尝试再次加载,我将得到一个OutOfMemory错误

接下来,我在这里尝试了Xamarin表单简介页面中的代码,以创建自定义的
ViewCell

类MyViewCell:ViewCell
{
公共MyViewCell()
{
var image=newmyimage
{
水平选项=布局选项。开始
};
SetBinding(image.SourceProperty,新绑定(“ImagePath”);
image.WidthRequest=image.HeightRequest=40;
var nameLayout=CreateLayout();
var viewLayout=新的StackLayout()
{
方向=堆叠方向。水平,
子项={image,nameLayout}
};
视图=视图布局;
}//端构造函数
静态StackLayout CreateLayout()
{
var titleLabel=新标签
{
HorizontalOptions=LayoutOptions.FillAndExpand,
TextColor=Color.FromRgb(0、110、128)
};
titleLabel.SetBinding(Label.TextProperty,“Title”);
var detailLabel=新标签
{
水平选项=LayoutOptions.FillAndExpand
};
detailLabel.SetBinding(Label.TextProperty,“Detail”);
var布局=新的StackLayout()
{
HorizontalOptions=LayoutOptions.StartAndExpand,
方向=堆叠方向。垂直,
Children={titleLabel,detailLabel}
};
返回布局;
}
}
但这不会加载列表,甚至不会第一次加载列表

我尝试了Avrohom的代码(在这里找到),但不幸的是,它仍然无法第一次加载


有人有什么想法吗?

您的图像可能太大了,不是文件大小,而是这些文件的位图表示


您应该使用较小的图像,或者在运行时实现一个自定义的单元渲染器。参见Xamarin的文章。

你的问题很不清楚。我看不到问题标题和描述之间的关系。对不起,我已经编辑了,不知道我是如何处理的。谢谢你回答Stephane。这些图片来自URL,看起来都是500px以上。我如何调整尺寸?(很抱歉,对于C#和Xamarin来说是非常新的-就像几周前新的一样)。我知道如何实现自定义渲染器,但不知道从何处开始调整大小。ListView中的Cheers 500px图像确实非常巨大,检索也需要时间。为什么不在后端调整它们的大小?或者使用cloudinary.com之类的服务?谢谢你的意见,Stephane。这是一个uni项目,所以我们将不得不把它们排除在外,但我会明确记住,在未来我有一个简单的网格,有6个图像2x2网格。早些时候,图像是从android资源加载的。但后来我将其作为嵌入式资源添加到PCL中。Kn显示我设置了imagesource,ondisappearing显示我使imagesource为nul。。但它仍然占用大量内存,并且经常抛出outofmemory错误。有什么想法吗