Элементы ListView не полностью загружаются из базы данных SQLite [Xamarin.Forms]

Недавно я заметил проблему с моим списком и моей локальной базой данных с использованием sqlite и Xamarin.Forms, моя проблема в том, что когда данные моей таблицы выгружаются в мою ObservableCollection (исходный элемент ListView) и мое представление списка показывает это, ListView не показывает все элементы, которые должны отображаться, я пробовал, добавляя динамически (без базы данных) элементы в свое представление списка, и, таким образом, проблема, кажется, исчезает, я уверен, что проблема не в из моей базы данных sqlite, потому что также проблема в одном прошлом проекте, в котором я использую api для получения моей информации, проблема была такой же, поэтому я пришел к выводу, что проблема заключалась в отображении внешней информации в моем ListView, поэтому кто-нибудь знает возможное решение для моей проблемы, наоборот, было бы действительно полезно, если бы кто-то мог попробовать сделать проект со списком и базой данных sqlite.

Важный факт: ListView в моем XAML имеет контроллер Frame, поэтому, когда я его не использую, он показывает мне все элементы из базы данных, я также не знаю, почему

мой текущий код XAML:

      <ListView
           SeparatorVisibility="None"
                IsGroupingEnabled="True"
                ItemsSource="{Binding TasksCollection}"
                GroupDisplayBinding="{Binding Key}"
                HasUnevenRows="True">
                <ListView.GroupHeaderTemplate>
                    <DataTemplate>
                        <TextCell
                            Text="{Binding Key}"
                            TextColor="White"/>
                    </DataTemplate>
                </ListView.GroupHeaderTemplate>
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <ViewCell>
                            <Frame
                                HeightRequest="150"
                                Margin="10"
                                HasShadow="True"
                                CornerRadius="25"
                                BackgroundColor="White">
                                <Grid
                                    Padding="5">
                                <Grid.GestureRecognizers>
                                    <TapGestureRecognizer Command="{Binding GridExpandCommand}"/>
                                </Grid.GestureRecognizers>
                                    <Grid.RowDefinitions>
                                        <RowDefinition Height="2*"/>
                                    <RowDefinition Height="*"/>
                                </Grid.RowDefinitions>
                                    <Label
                                        Grid.Column="0"
                                        Grid.Row="0"
                                        Text="{Binding Name}"
                                        FontAttributes="Bold"
                                        FontSize="Small"
                                        HorizontalOptions="Start"
                                        VerticalOptions="Start">
                                    </Label>
                                    <Image
                                        HeightRequest="25"
                                        Grid.Row="0"
                                        Grid.Column="1"
                                        Source="{Binding TaskIcon}"
                                        HorizontalOptions="End"
                                        VerticalOptions="Start">
                                    </Image>
                                    <Label
                                        Grid.Row="1"
                                        Grid.Column="0"
                                        Text="{Binding Description}"
                                        FontAttributes="Bold"
                                        FontSize="Small"
                                        HorizontalOptions="Start"
                                        VerticalOptions="End">
                                    </Label>
                                    <Button
                                        Grid.Row="1"
                                        Grid.Column="1"
                                        Text="{Binding IsDone}"
                                        TextColor="White"
                                        FontAttributes="Bold"
                                        VerticalOptions="CenterAndExpand"
                                        HorizontalOptions="Center"
                                        FontSize="Small"
                                        CornerRadius="100"
                                        BackgroundColor="LawnGreen">
                                    </Button>
                                </Grid>
                            </Frame>
                        </ViewCell>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>

Мой код для добавления элементов в коллекцию (я использую MvvmHelpers для группировки данных с помощью Grouping) следующий:

foreach (var item in new string[]
            { Languages.HightPriorText, Languages.MediumPriorText, Languages.LessPriorityText })
            {
                var sorted = from tasks in tableList
                             orderby tasks.PriorityLevel // orberby is a keyword of System.Linq namespace
                             group tasks by tasks.PriorityLevel into taskList
                             select new Grouping<string, TaskItemViewModel>(taskList.Key, taskList);
                List<Grouping<string, TaskItemViewModel>> listItems = sorted.Where(t => t.Key == item).ToList();
                foreach (var item2 in listItems)
                    VeryImportantList.Add(item2);
            }

Результат следующий:

Изображение результата работы приложения

При любом ответе я буду замечен по этому поводу, а также по любому вопросу, было бы здорово помочь, пожалуйста!


person Andrés Quiroz Valdovinos    schedule 29.10.2019    source источник
comment
Quiroz, я не могу воспроизвести вашу проблему, поэтому можете ли вы предоставить один образец, который может воспроизвести эту проблему на github, я скачаю ваш образец для тестирования.   -  person Cherry Bu - MSFT    schedule 29.10.2019
comment
я уверен, что проблема не в моей базе данных sqlite - вы уверены, но не проверяли? Не могли бы вы убедиться, что элементы, загруженные из вашей базы данных, содержат данные, которые, как вы подозреваете, в них содержатся?   -  person Paul Kertscher    schedule 29.10.2019
comment
Не могли бы вы добавить код, который вы используете для загрузки элементов в свой TaskCollection?   -  person Paul Kertscher    schedule 29.10.2019
comment
@PaulKertscher хорошо, я проверил это, и нет, проблема, похоже, не в моей базе данных sql, вместо этого, похоже, отображение элементов, я проверил это, и данные в моей коллекции правильно сброшены, но проблема возникла отображение этого   -  person Andrés Quiroz Valdovinos    schedule 29.10.2019
comment
@PaulKertscher да! Я отредактировал свой пост и добавил код для добавления элементов   -  person Andrés Quiroz Valdovinos    schedule 29.10.2019
comment
@ CherryBu-MSFT да, конечно! Просто подождите, пожалуйста, я обязательно дам вам ссылку на проект GitHub!   -  person Andrés Quiroz Valdovinos    schedule 29.10.2019
comment
@ AndrésQuirozValdovinos Но вы писали, что элементы отображаются правильно, когда вы создаете тему на лету? Есть ли какая-нибудь разница в том, как вы их добавляете?   -  person Paul Kertscher    schedule 29.10.2019


Ответы (1)


Я наконец решил это, и, как я ожидал, это ошибка моей текущей версии Xamarin.Forms (4.0.0), поэтому я обновляюсь до последней версии, и все возвращается нормально, как я и ожидал!

person Andrés Quiroz Valdovinos    schedule 31.10.2019
comment
у меня тоже сработало. В моем случае проблема заключалась в том, что добавление новых элементов с помощью метода OnAppearing приводило к тому, что список имел пустые ячейки. Обновление форм устранило проблему - person lawiluk; 04.11.2019