我在xamarin表单中有一个相对简单的应用程序,它有一个带有自定义单元格的ListView。在这些单元格中,有一个图像。我遇到的问题是这个。当我滚动ListView时,我可以在加载新图像之前看到前一个单元格中的图像片刻。
我尝试将ListView的ListViewCachingStrategy
设置为所有可能的值,但问题仍然存在。
有没有办法阻止回收?我知道这是一个性能打击,但列表并不那么大。当然,除非有更好的方法来阻止这种图像问题
答案 0 :(得分:2)
您可以使用绑定覆盖OnBindingContextChanged
ViewCell的方法。这样的事情:
protected override void OnBindingContextChanged()
{
image.Source = null;
base.OnBindingContextChanged();
var item = BindingContext as YourItemType;
if (item == null)
return;
image.Source = item.YourImageSource;
}
答案 1 :(得分:1)
我还没有明确地尝试过这个,但如果你附加了ListView上的ItemDisappearing事件。
然后获取e.Item并清除图像,以便它应该用单独的空格更新单元格中的图像。
然后当它再次回到视图中时,在加载新内容之前它应该是空白的。
答案 2 :(得分:0)
我们对这个问题所做的是将绑定图像设置为空值,同时用户滚动此图像以使图像再次渲染,这不是一个好的解决方案,但它可以正常工作。