我正在使用自定义照片库构建应用。我有一个ListView,每行显示4张照片。设备上的所有照片首先加载到一个列表(照片大约100x100),然后我有一个带有自定义RowItem类的可观察集合,其中有4张照片,并绑定到ListView。一切正常,最多100-200张照片,但当有1000多张照片时应用程序崩溃。我认为这是一个记忆问题。
有没有办法正确实现这一点,以便可以处理无数张照片?我为ListView选择了“按需加载”,但我不确定如何卸载以前加载的照片。另外,当用户向上滚动时如何重新加载它们?
答案 0 :(得分:1)
您可以尝试一些方法:
YMMV所以测试不同的组合以找到适合你的组合。
答案 1 :(得分:0)
是的,这是ListView和图像的问题。很多人使用FlowListView来显示图像...
Here您可以找到样本
DataTemplate和DataTemplateSelector支持
固定或自动列数
分组支持
列可以扩展为空白区域(可配置)
任何视图都可以用作单元格
支持所有Xamarin.Forms平台
简单样本
<flv:FlowListView FlowColumnCount="3" SeparatorVisibility="None" HasUnevenRows="false"
FlowItemTappedCommand="{Binding ItemTappedCommand}" FlowLastTappedItem="{Binding LastTappedItem}"
FlowItemsSource="{Binding Items}" >
<flv:FlowListView.FlowColumnTemplate>
<DataTemplate>
<Label HorizontalOptions="Fill" VerticalOptions="Fill"
XAlign="Center" YAlign="Center" Text="{Binding Title}"/>
</DataTemplate>
</flv:FlowListView.FlowColumnTemplate>
</flv:FlowListView>
答案 2 :(得分:0)
使用此库 https://github.com/luberda-molinet/FFImageLoading解决内存问题,并且还有很棒的缓存机制