Xamarin.Forms ListView在滚动后更改集合之前在Android中呈现错误

时间:2019-07-15 23:31:12

标签: c# android xaml xamarin.forms

如果我只是简单地修改了ListView的数据而不滚动,那么一切都会正确显示:

https://gfycat.com/illustriousnastyconey

但是,如果我在更改数据之前滚动,则数据更改后一切看起来都破了:

https://gfycat.com/abandonedvelvetyaoudad

这是我的ListView XAML

<ListView ItemsSource="{Binding network.Predictions}" x:Name="ShowsList" IsGroupingEnabled="True" HasUnevenRows="True" ItemTapped="ShowsList_ItemTapped">
        <ListView.GroupHeaderTemplate>
            <DataTemplate>
                <ViewCell Height="25">
                    <Grid BackgroundColor="#CC778899">
                        <Label Text="{Binding Category}" FontSize="Small" TextColor="White" VerticalOptions="Center" Margin="5,0,0,0"/>
                    </Grid>                        
                </ViewCell>
            </DataTemplate>
        </ListView.GroupHeaderTemplate>

        <ListView.ItemTemplate>
            <DataTemplate>
                <ViewCell>
                    <Grid BackgroundColor="White">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="*"/>
                            <ColumnDefinition Width="Auto"/>
                        </Grid.ColumnDefinitions>

                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto"/>
                            <RowDefinition Height="Auto"/>
                        </Grid.RowDefinitions>

                        <Label Text="{Binding Name}" FontSize="Medium" Margin="5"/>
                        <Label Grid.Column="1" Text="{Binding Status}" FontSize="Small" TextColor="{Binding StatusIndex, Converter={StaticResource StatusColor}}" Margin="5" VerticalOptions="Center/>
                    </Grid>

                </ViewCell>                    
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

此外,在发生这种情况之后,如果我滚动以使混乱的元素离开屏幕,然后向后滚动,则这些元素看起来就很好。它确实似乎在正确分配空间,并且在滚动后它们正确显示,因此它不会错误地读取数据或类似的东西,只是显示不正确。

我有个主意,将listview的背景色更改为红色,以查看文本是否呈现为白色,但是不,那些丢失的元素是完全透明的。正确的元素都具有背景色,但是缺少的元素只是显示为红色。

1 个答案:

答案 0 :(得分:1)

它似乎是listview的错误,此问题存在于3.6的初始版本中,并且已在3.6.0.344457中进行了修复,许多开发人员都遇到此问题,如果您有类似的问题,请查看:{{3 }} 修复它的最快,最简单的方法是将Xamarin.Forms版本回滚