具有缓存策略的Xamarin.Forms List视图recycle元素不会刷新可见元素

时间:2017-04-05 12:38:16

标签: listview xamarin xamarin.forms

我在Xamarin.Forms中有一个项目,它包含一个绑定到ObservableCollection的listView。

listView包含单元格,每个单元格都带有标签和开关。我在列表上方有两个按钮:选择所有&全部取消选择。那些按钮应相应地切换所有开关(并希望更新开关的UI状态):选择all应刷新我的listView,所有开关切换为ON,取消选择all刷新我的listView,所有开关切换为OFF。

我在该列表上也有一个缓存策略设置为“Recycle element”。

有趣的是:当我点击“全部选择”或“全部取消选中”按钮时,列表视图的上半部分(在屏幕上可见)在滚动时不刷新但是在listView中,新生成的单元格由于缓存策略而更新,因为它们是新的。此外,当我向上滚动时,旧单元格也会被刷新,因为它们被回收。

如何刷新listView 中的开关状态而不用滚动它?

非常感谢提前。

1 个答案:

答案 0 :(得分:1)

如果您不是Android,那么我的回答可能并不相关。 我们在Xamarin.Forms中遇到完全相同的问题,带有带文本的列表视图和Android上的开关,结果发现了一个已知的Android错误,其中listview没有刷新,我们最终实现了给出的解决方法(对不起,我没有找到最初找到答案的网址,因为我没有找到它。)

                <x:Arguments>
                <ListViewCachingStrategy>
                    <OnPlatform x:TypeArguments="ListViewCachingStrategy" iOS="RecycleElement" Android="RetainElement"/>
                </ListViewCachingStrategy>
            </x:Arguments>

解决方法是关闭Android上的缓存,我认为该错误仅适用于最新版本的Android操作系统,但我们并没有分辨。