Xamarin.Forms ListView-刷新有时会暂时隐藏图像

时间:2019-01-03 14:51:17

标签: listview xamarin.forms

我的应用程序中有一个列表视图。有时(在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所指示的那样)。

以前有人遇到过这个问题吗?或者有人可以提供解决方法吗?

1 个答案:

答案 0 :(得分:1)

解决方案:我已经通过使用Android的resources文件夹(可绘制)和Apple的Asset Catalog更改了存储图像的方式。 然后,我将代码修改为:

listItem.Image = ImageSource.FromFile(String.Format(${returnedItem.Description.Replace(" ", "")}.png"));