我的应用程序中有一个列表视图。有时(在Android和iOS上)刷新操作会暂时“隐藏”某些图像。这些图像几乎总是在下次刷新时返回。
这是设置图像源的代码(已尝试在没有Device.BeginInvokeOnMainThread的情况下使用)
Device.BeginInvokeOnMainThread(() =>
{
//Set Image value for list item
listItem.Image = ImageSource.FromResource(String.Format("AppName.FolderName.{0}.png", returnedItem.Description.Replace(" ", "")));
});
这是列表视图的UI中的代码:
<ListView x:Name="listView" HasUnevenRows="True" CachingStrategy="RecycleElement" ItemSelected="ShowItem">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout Spacing="5" Orientation="Horizontal" Padding="0,25,0,25" Margin="20,0,20,0">
<Image HeightRequest="35" WidthRequest="35" Source="{Binding Path=Image}" VerticalOptions="Center" Margin="0,0,5,0"/>
<Label Text="{Binding Path=Name}" FontFamily="{StaticResource BoldFont}" FontSize="19" VerticalTextAlignment="Center"/>
<StackLayout HorizontalOptions="EndAndExpand">
<Label Text="{Binding Path=Amount}" FontSize="20" TextColor="#b3b3b3" VerticalTextAlignment="Center" FontFamily="{StaticResource MediumFont}" HorizontalOptions="EndAndExpand" HorizontalTextAlignment="End"/>
<Label Text="{Binding Path=Value}" FontSize="14" TextColor="#b3b3b3" VerticalTextAlignment="Center" FontFamily="{StaticResource LightFont}" HorizontalOptions="EndAndExpand" HorizontalTextAlignment="End"/>
</StackLayout>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
很遗憾,我不能显示该应用程序的任何屏幕截图,因为我的雇主不允许。但是,在过去6个月中,我制作了2个单独的应用程序,两个应用程序都包含包含图像的列表视图,并且两个应用程序都出现了问题(在两个平台上)。另一个应用程序包含与列表视图非常相似的代码。
注意:图像存储在主项目的文件夹中,并且配置为具有“嵌入资源”的构建动作(如通过Microsoft here所指示的那样)。
以前有人遇到过这个问题吗?或者有人可以提供解决方法吗?
答案 0 :(得分:1)
解决方案:我已经通过使用Android的resources文件夹(可绘制)和Apple的Asset Catalog更改了存储图像的方式。 然后,我将代码修改为:
listItem.Image = ImageSource.FromFile(String.Format(${returnedItem.Description.Replace(" ", "")}.png"));