我在Xamarin.Forms中有一个项目,它包含一个绑定到ObservableCollection的listView。
listView包含单元格,每个单元格都带有标签和开关。我在列表上方有两个按钮:选择所有&全部取消选择。那些按钮应相应地切换所有开关(并希望更新开关的UI状态):选择all应刷新我的listView,所有开关切换为ON,取消选择all刷新我的listView,所有开关切换为OFF。
我在该列表上也有一个缓存策略设置为“Recycle element”。
有趣的是:当我点击“全部选择”或“全部取消选中”按钮时,列表视图的上半部分(在屏幕上可见)在滚动时不刷新但是在listView中,新生成的单元格由于缓存策略而更新,因为它们是新的。此外,当我向上滚动时,旧单元格也会被刷新,因为它们被回收。
如何刷新listView 中的开关状态而不用滚动它?
非常感谢提前。
答案 0 :(得分:1)
如果您不是Android,那么我的回答可能并不相关。 我们在Xamarin.Forms中遇到完全相同的问题,带有带文本的列表视图和Android上的开关,结果发现了一个已知的Android错误,其中listview没有刷新,我们最终实现了给出的解决方法(对不起,我没有找到最初找到答案的网址,因为我没有找到它。)
<x:Arguments>
<ListViewCachingStrategy>
<OnPlatform x:TypeArguments="ListViewCachingStrategy" iOS="RecycleElement" Android="RetainElement"/>
</ListViewCachingStrategy>
</x:Arguments>
解决方法是关闭Android上的缓存,我认为该错误仅适用于最新版本的Android操作系统,但我们并没有分辨。