【问题标题】:Stop Cell recycling in Xamarin Forms ListView在 Xamarin Forms ListView 中停止细胞回收
【发布时间】:2016-04-07 18:47:44
【问题描述】:

我有一个相对简单的 xamarin 表单应用程序,它有一个带有自定义单元格的 ListView。在这些单元格中,有一个图像。我遇到的问题是这个。当我滚动 ListView 时,我可以在加载新图像之前看到来自先前单元格的图像片刻。

我尝试将 ListView 的 ListViewCachingStrategy 设置为所有可能的值,但问题仍然存在。

有没有办法停止回收?我知道这是对性能的影响,但列表并没有那么大。当然,除非有更好的方法来解决这个图像问题

【问题讨论】:

    标签: listview xamarin xamarin.forms


    【解决方案1】:

    您可以覆盖OnBindingContextChanged ViewCell 的方法,而不是使用绑定。类似的东西:

    protected override void OnBindingContextChanged()
    {
        image.Source = null;
    
        base.OnBindingContextChanged();
    
        var item = BindingContext as YourItemType;
    
        if (item == null)
            return;
    
        image.Source = item.YourImageSource;
    }
    

    在此处阅读更多信息:https://developer.xamarin.com/guides/xamarin-forms/user-interface/listview/performance/#RecycleElement

    【讨论】:

    • 为什么不使用绑定?
    【解决方案2】:

    我还没有明确地尝试过这个,但是如果你在 ListView 上附加 ItemDisappearing 事件。

    然后获取 e.Item 并清除 Image,以便它应该将单元格中的 Image 更新为空白。

    然后当它再次出现时,在加载新内容之前它应该是空白的。

    【讨论】:

    • 我可以尝试调整它以适应我的应用程序。我会回复你的。
    【解决方案3】:

    我们对这个问题所做的是在用户滚动时将绑定图像设置为空值,这会强制图像再次呈现,这不是一个好的解决方案,但它确实有效。

    【讨论】:

      猜你喜欢
      • 2018-02-22
      • 2015-01-12
      • 1970-01-01
      • 1970-01-01
      • 2017-01-05
      • 1970-01-01
      • 2019-07-06
      • 2022-06-17
      • 2020-04-09
      相关资源
      最近更新 更多