Xamarin表单:如何在listview中隐藏重复的月份名称?

Xamarin表单:如何在listview中隐藏重复的月份名称?,listview,xamarin.forms,show-hide,Listview,Xamarin.forms,Show Hide,我在我的应用程序(UI-1,左侧屏幕)中有一个事件列表,上面总是重复着月份名称 我需要从列表中删除重复的月份名称,并且需要像UI-2这样的UI(右侧) 我将listview用于此功能,以下是我的代码: 在我的情况下,我需要按月份顺序显示我的列表。我在下面添加了我当前的代码: 我的模型类: public class CalendarEvents { public List<EventsHB> eventsHB { get; set; } }

我在我的应用程序(UI-1,左侧屏幕)中有一个事件列表,上面总是重复着月份名称

我需要从列表中删除重复的月份名称,并且需要像UI-2这样的UI(右侧)

我将listview用于此功能,以下是我的代码:

在我的情况下,我需要按月份顺序显示我的列表。我在下面添加了我当前的代码:

我的模型类:

public class CalendarEvents
    {
        public List<EventsHB> eventsHB { get; set; }
    }

    public class EventsHB
    {
        public string month { get; set; }
        public EventTO eventTO { get; set; }
    }
    public class EventTO
    { 
        public string calendarEventId { get; set; }
        public string title { get; set; }
        public long startDate { get; set; }
        public string startTime { get; set; }
    }
"eventsHB": [
        {
            "eventTO": {
                "calendarEventId": 136,
                "title": " school event",
                "startDate": 1561006800000,
                "startTime": "6:15 PM"
            },
            "month": "July"
        },
        {
            "eventTO": {
                "calendarEventId": 139,
                "title": "New Admission Day"
                "startDate": 1560834000000
                "startTime": "10:00 AM"
            },
            "month": "July"
        },
        {
            "eventTO": {
                "calenderId": 810354,
                "title": "event pta"
                "startDate": 1559710800000,
                "startTime": "10:00 AM"
            },
            "month": "June"
        },
       {
            "eventTO": {
                "calendarEventId": 89,
                "title": "Memorial Day Meet",
                "startDate": 1559365200000,
                "startTime": "8:00 AM"
            },
            "month": "June"
        }
    ]
 <ListView x:Name="MyEventsListview"
                      HasUnevenRows="True"
                      ItemsSource="{Binding AllItems,Mode=TwoWay}">
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <ViewCell>
                            <ViewCell.View>

                                <StackLayout
                                    Orientation="Vertical">

                                        <Label 
                                        Text="{Binding month}"/>

                                        <StackLayout
                                Orientation="Horizontal">

                                            <Grid>
                                                <Grid.ColumnDefinitions>
                                                    <ColumnDefinition Width="50*" />
                                                    <ColumnDefinition Width="50*" />
                                                </Grid.ColumnDefinitions>

                                                <StackLayout
                                            Grid.Column="0"
                                            Orientation="Vertical">

                                                    <Label 
                                            Text="{Binding eventTO.startDate,  Converter={StaticResource dayConverter}}"/>

                                                    <Label 
                                            Text="{Binding eventTO.startDate,  Converter={StaticResource dateConverter}}"/>

                                                    <Label 
                                            Text="{Binding eventTO.startTime}"/>
                                                </StackLayout>

                                                <Label 
                                        Text="{Binding eventTO.title}"/>
                                            </Grid>
                                        </StackLayout>
                                </StackLayout>
                            </ViewCell.View>
                        </ViewCell>
                    </DataTemplate>
                </ListView.ItemTemplate>
              </ListView>
            HttpClient client = new HttpClient();
                var Response = await client.GetAsync("My REST Call");
                if (Response.IsSuccessStatusCode)
                {
                    string response = await Response.Content.ReadAsStringAsync();
                    myevents = new CalendarEvents();
                    if (response != "")
                    {
                        myevents = JsonConvert.DeserializeObject<CalendarEvents>(response.ToString());
                    }
                    AllItems = new ObservableCollection<EventsHB>(myevents.eventsHB);
Xaml:

public class CalendarEvents
    {
        public List<EventsHB> eventsHB { get; set; }
    }

    public class EventsHB
    {
        public string month { get; set; }
        public EventTO eventTO { get; set; }
    }
    public class EventTO
    { 
        public string calendarEventId { get; set; }
        public string title { get; set; }
        public long startDate { get; set; }
        public string startTime { get; set; }
    }
"eventsHB": [
        {
            "eventTO": {
                "calendarEventId": 136,
                "title": " school event",
                "startDate": 1561006800000,
                "startTime": "6:15 PM"
            },
            "month": "July"
        },
        {
            "eventTO": {
                "calendarEventId": 139,
                "title": "New Admission Day"
                "startDate": 1560834000000
                "startTime": "10:00 AM"
            },
            "month": "July"
        },
        {
            "eventTO": {
                "calenderId": 810354,
                "title": "event pta"
                "startDate": 1559710800000,
                "startTime": "10:00 AM"
            },
            "month": "June"
        },
       {
            "eventTO": {
                "calendarEventId": 89,
                "title": "Memorial Day Meet",
                "startDate": 1559365200000,
                "startTime": "8:00 AM"
            },
            "month": "June"
        }
    ]
 <ListView x:Name="MyEventsListview"
                      HasUnevenRows="True"
                      ItemsSource="{Binding AllItems,Mode=TwoWay}">
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <ViewCell>
                            <ViewCell.View>

                                <StackLayout
                                    Orientation="Vertical">

                                        <Label 
                                        Text="{Binding month}"/>

                                        <StackLayout
                                Orientation="Horizontal">

                                            <Grid>
                                                <Grid.ColumnDefinitions>
                                                    <ColumnDefinition Width="50*" />
                                                    <ColumnDefinition Width="50*" />
                                                </Grid.ColumnDefinitions>

                                                <StackLayout
                                            Grid.Column="0"
                                            Orientation="Vertical">

                                                    <Label 
                                            Text="{Binding eventTO.startDate,  Converter={StaticResource dayConverter}}"/>

                                                    <Label 
                                            Text="{Binding eventTO.startDate,  Converter={StaticResource dateConverter}}"/>

                                                    <Label 
                                            Text="{Binding eventTO.startTime}"/>
                                                </StackLayout>

                                                <Label 
                                        Text="{Binding eventTO.title}"/>
                                            </Grid>
                                        </StackLayout>
                                </StackLayout>
                            </ViewCell.View>
                        </ViewCell>
                    </DataTemplate>
                </ListView.ItemTemplate>
              </ListView>
            HttpClient client = new HttpClient();
                var Response = await client.GetAsync("My REST Call");
                if (Response.IsSuccessStatusCode)
                {
                    string response = await Response.Content.ReadAsStringAsync();
                    myevents = new CalendarEvents();
                    if (response != "")
                    {
                        myevents = JsonConvert.DeserializeObject<CalendarEvents>(response.ToString());
                    }
                    AllItems = new ObservableCollection<EventsHB>(myevents.eventsHB);

视图模型:

public class CalendarEvents
    {
        public List<EventsHB> eventsHB { get; set; }
    }

    public class EventsHB
    {
        public string month { get; set; }
        public EventTO eventTO { get; set; }
    }
    public class EventTO
    { 
        public string calendarEventId { get; set; }
        public string title { get; set; }
        public long startDate { get; set; }
        public string startTime { get; set; }
    }
"eventsHB": [
        {
            "eventTO": {
                "calendarEventId": 136,
                "title": " school event",
                "startDate": 1561006800000,
                "startTime": "6:15 PM"
            },
            "month": "July"
        },
        {
            "eventTO": {
                "calendarEventId": 139,
                "title": "New Admission Day"
                "startDate": 1560834000000
                "startTime": "10:00 AM"
            },
            "month": "July"
        },
        {
            "eventTO": {
                "calenderId": 810354,
                "title": "event pta"
                "startDate": 1559710800000,
                "startTime": "10:00 AM"
            },
            "month": "June"
        },
       {
            "eventTO": {
                "calendarEventId": 89,
                "title": "Memorial Day Meet",
                "startDate": 1559365200000,
                "startTime": "8:00 AM"
            },
            "month": "June"
        }
    ]
 <ListView x:Name="MyEventsListview"
                      HasUnevenRows="True"
                      ItemsSource="{Binding AllItems,Mode=TwoWay}">
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <ViewCell>
                            <ViewCell.View>

                                <StackLayout
                                    Orientation="Vertical">

                                        <Label 
                                        Text="{Binding month}"/>

                                        <StackLayout
                                Orientation="Horizontal">

                                            <Grid>
                                                <Grid.ColumnDefinitions>
                                                    <ColumnDefinition Width="50*" />
                                                    <ColumnDefinition Width="50*" />
                                                </Grid.ColumnDefinitions>

                                                <StackLayout
                                            Grid.Column="0"
                                            Orientation="Vertical">

                                                    <Label 
                                            Text="{Binding eventTO.startDate,  Converter={StaticResource dayConverter}}"/>

                                                    <Label 
                                            Text="{Binding eventTO.startDate,  Converter={StaticResource dateConverter}}"/>

                                                    <Label 
                                            Text="{Binding eventTO.startTime}"/>
                                                </StackLayout>

                                                <Label 
                                        Text="{Binding eventTO.title}"/>
                                            </Grid>
                                        </StackLayout>
                                </StackLayout>
                            </ViewCell.View>
                        </ViewCell>
                    </DataTemplate>
                </ListView.ItemTemplate>
              </ListView>
            HttpClient client = new HttpClient();
                var Response = await client.GetAsync("My REST Call");
                if (Response.IsSuccessStatusCode)
                {
                    string response = await Response.Content.ReadAsStringAsync();
                    myevents = new CalendarEvents();
                    if (response != "")
                    {
                        myevents = JsonConvert.DeserializeObject<CalendarEvents>(response.ToString());
                    }
                    AllItems = new ObservableCollection<EventsHB>(myevents.eventsHB);
HttpClient=newhttpclient();
var Response=await client.GetAsync(“我的REST调用”);
if(响应。IsSuccessStatusCode)
{
string response=wait response.Content.ReadAsStringAsync();
myevents=新日历事件();
如果(响应!=“”)
{
myevents=JsonConvert.DeserializeObject(response.ToString());
}
AllItems=新的可观察集合(myevents.eventsHB);

我不知道需要在model类、xaml和ViewModel中做什么更改才能在month view中对列表进行分组。有人可以建议解决方案提示吗?

您需要按月份对ListView进行分组。ListView提供一个名为“IsGroupingEnabled”的属性,您需要将其设置为True

然后,需要按如下方式设置ListView的GroupHeaderTemplate:

<ListView.GroupHeaderTemplate>
    <DataTemplate>
         <ViewCell Height="45">
             <Grid Padding="10" BackgroundColor="WhiteSmoke">
                 <Label Text="{Binding Key}" FontSize="18"/>
             </Grid>
         </ViewCell>
    </DataTemplate>
</ListView.GroupHeaderTemplate>

回顾我的简单分组和

在我的示例中,我已按类别分组,但在您的示例中,您应该将月份设置为组键


您可以从中尝试我的整个示例。您需要按月份对ListView进行分组。ListView提供一个名为“IsGroupingEnabled”的属性,您需要将该属性设置为True

然后,需要按如下方式设置ListView的GroupHeaderTemplate:

<ListView.GroupHeaderTemplate>
    <DataTemplate>
         <ViewCell Height="45">
             <Grid Padding="10" BackgroundColor="WhiteSmoke">
                 <Label Text="{Binding Key}" FontSize="18"/>
             </Grid>
         </ViewCell>
    </DataTemplate>
</ListView.GroupHeaderTemplate>

回顾我的简单分组和

在我的示例中,我已按类别分组,但在您的示例中,您应该将月份设置为组键


您可以尝试我的整个示例,我为您编写了一个示例,以显示在您的案例中,您应该显示分组列表视图的模型和数据:

模型和数据应如下所示:

public partial class MainPage : ContentPage
{
    public ObservableCollection<EventsHB> AllItems { get; set; }


    public MainPage()
    {
        InitializeComponent();            

        AllItems = new ObservableCollection<EventsHB>();

        var julyGroup = new EventsHB() {month = "july"};

        julyGroup.Add(new EventTO() { calendarEventId = "1", title = "firstTitle", startDate = "01-1-1", startTime = "01-1-1"});
        julyGroup.Add(new EventTO() { calendarEventId = "2", title = "secondTitle", startDate = "02-1-1", startTime = "01-1-2" });
        julyGroup.Add(new EventTO() { calendarEventId = "3", title = "thirdTitle", startDate = "02-1-1", startTime = "01-1-3" });
        julyGroup.Add(new EventTO() { calendarEventId = "4", title = "fourthTitle", startDate = "02-1-1", startTime = "01-1-4" });

        var juneGroup = new EventsHB() { month = "june" };
        juneGroup.Add(new EventTO() { calendarEventId = "1", title = "junefirstTitle", startDate = "01-1-1", startTime = "01-1-1" });
        juneGroup.Add(new EventTO() { calendarEventId = "2", title = "junesecondTitle", startDate = "02-1-1", startTime = "01-1-2" });
        juneGroup.Add(new EventTO() { calendarEventId = "3", title = "junethirdTitle", startDate = "02-1-1", startTime = "01-1-3" });
        juneGroup.Add(new EventTO() { calendarEventId = "4", title = "junefourthTitle", startDate = "02-1-1", startTime = "01-1-4" });

        AllItems.Add(julyGroup);
        AllItems.Add(juneGroup);
        //...
        //more months like April,May can be added

        BindingContext = this;
    }

}

public class EventsHB : ObservableCollection<EventTO>
{
    public string month { get; set; }
    public EventTO eventTO { get; set; }
}

public class EventTO
{
    public string calendarEventId { get; set; }
    public string title { get; set; }
    public string startDate { get; set; }
    public string startTime { get; set; }
}
{"eventsHB":
    {july:[

        {"eventTO":{"calendarEventId":135,}}

        {"eventTO":{"calendarEventId":135,}}

        {"eventTO":{"calendarEventId":135,}}

        {"eventTO":{"calendarEventId":135,}}
    }

    {june:[

        {"eventTO":{"calendarEventId":135,}}

        {"eventTO":{"calendarEventId":135,}}

        {"eventTO":{"calendarEventId":135,}}

        {"eventTO":{"calendarEventId":135,}}

         ]
    }
    ...
}
你可以用自己的方式转换它

样本如下:

参考:

更新:

public class CalendarEvents
    {
        public List<EventsHB> eventsHB { get; set; }
    }

    public class EventsHB
    {
        public string month { get; set; }
        public EventTO eventTO { get; set; }
    }
    public class EventTO
    { 
        public string calendarEventId { get; set; }
        public string title { get; set; }
        public long startDate { get; set; }
        public string startTime { get; set; }
    }
"eventsHB": [
        {
            "eventTO": {
                "calendarEventId": 136,
                "title": " school event",
                "startDate": 1561006800000,
                "startTime": "6:15 PM"
            },
            "month": "July"
        },
        {
            "eventTO": {
                "calendarEventId": 139,
                "title": "New Admission Day"
                "startDate": 1560834000000
                "startTime": "10:00 AM"
            },
            "month": "July"
        },
        {
            "eventTO": {
                "calenderId": 810354,
                "title": "event pta"
                "startDate": 1559710800000,
                "startTime": "10:00 AM"
            },
            "month": "June"
        },
       {
            "eventTO": {
                "calendarEventId": 89,
                "title": "Memorial Day Meet",
                "startDate": 1559365200000,
                "startTime": "8:00 AM"
            },
            "month": "June"
        }
    ]
 <ListView x:Name="MyEventsListview"
                      HasUnevenRows="True"
                      ItemsSource="{Binding AllItems,Mode=TwoWay}">
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <ViewCell>
                            <ViewCell.View>

                                <StackLayout
                                    Orientation="Vertical">

                                        <Label 
                                        Text="{Binding month}"/>

                                        <StackLayout
                                Orientation="Horizontal">

                                            <Grid>
                                                <Grid.ColumnDefinitions>
                                                    <ColumnDefinition Width="50*" />
                                                    <ColumnDefinition Width="50*" />
                                                </Grid.ColumnDefinitions>

                                                <StackLayout
                                            Grid.Column="0"
                                            Orientation="Vertical">

                                                    <Label 
                                            Text="{Binding eventTO.startDate,  Converter={StaticResource dayConverter}}"/>

                                                    <Label 
                                            Text="{Binding eventTO.startDate,  Converter={StaticResource dateConverter}}"/>

                                                    <Label 
                                            Text="{Binding eventTO.startTime}"/>
                                                </StackLayout>

                                                <Label 
                                        Text="{Binding eventTO.title}"/>
                                            </Grid>
                                        </StackLayout>
                                </StackLayout>
                            </ViewCell.View>
                        </ViewCell>
                    </DataTemplate>
                </ListView.ItemTemplate>
              </ListView>
            HttpClient client = new HttpClient();
                var Response = await client.GetAsync("My REST Call");
                if (Response.IsSuccessStatusCode)
                {
                    string response = await Response.Content.ReadAsStringAsync();
                    myevents = new CalendarEvents();
                    if (response != "")
                    {
                        myevents = JsonConvert.DeserializeObject<CalendarEvents>(response.ToString());
                    }
                    AllItems = new ObservableCollection<EventsHB>(myevents.eventsHB);
在应用程序端转换数据结构非常复杂,我为您转换数据结构,并在项目中更新代码的任何地方添加注释

出现异常的原因是因为模型
EventsHB:observateCollection
,所以我在这里创建了一个新的模型来反序列化json

public class CalendarEvents
{
    //update here: here should be List<EventsHBTwo>
    public List<EventsHBTwo> eventsHB { get; set; }
}

//update use this one to shou grouped list data
public class EventsHB : ObservableCollection<EventTO>
{
    public string month { get; set; }
    public EventTO eventTO { get; set; }
}

//Update: use this one to deserialize json
public class EventsHBTwo
{
    public string month { get; set; }
    public EventTO eventTO { get; set; }
}

我为您编写了一个示例,以说明在您的案例中,您必须显示分组ListView的模型和数据:

模型和数据应如下所示:

public partial class MainPage : ContentPage
{
    public ObservableCollection<EventsHB> AllItems { get; set; }


    public MainPage()
    {
        InitializeComponent();            

        AllItems = new ObservableCollection<EventsHB>();

        var julyGroup = new EventsHB() {month = "july"};

        julyGroup.Add(new EventTO() { calendarEventId = "1", title = "firstTitle", startDate = "01-1-1", startTime = "01-1-1"});
        julyGroup.Add(new EventTO() { calendarEventId = "2", title = "secondTitle", startDate = "02-1-1", startTime = "01-1-2" });
        julyGroup.Add(new EventTO() { calendarEventId = "3", title = "thirdTitle", startDate = "02-1-1", startTime = "01-1-3" });
        julyGroup.Add(new EventTO() { calendarEventId = "4", title = "fourthTitle", startDate = "02-1-1", startTime = "01-1-4" });

        var juneGroup = new EventsHB() { month = "june" };
        juneGroup.Add(new EventTO() { calendarEventId = "1", title = "junefirstTitle", startDate = "01-1-1", startTime = "01-1-1" });
        juneGroup.Add(new EventTO() { calendarEventId = "2", title = "junesecondTitle", startDate = "02-1-1", startTime = "01-1-2" });
        juneGroup.Add(new EventTO() { calendarEventId = "3", title = "junethirdTitle", startDate = "02-1-1", startTime = "01-1-3" });
        juneGroup.Add(new EventTO() { calendarEventId = "4", title = "junefourthTitle", startDate = "02-1-1", startTime = "01-1-4" });

        AllItems.Add(julyGroup);
        AllItems.Add(juneGroup);
        //...
        //more months like April,May can be added

        BindingContext = this;
    }

}

public class EventsHB : ObservableCollection<EventTO>
{
    public string month { get; set; }
    public EventTO eventTO { get; set; }
}

public class EventTO
{
    public string calendarEventId { get; set; }
    public string title { get; set; }
    public string startDate { get; set; }
    public string startTime { get; set; }
}
{"eventsHB":
    {july:[

        {"eventTO":{"calendarEventId":135,}}

        {"eventTO":{"calendarEventId":135,}}

        {"eventTO":{"calendarEventId":135,}}

        {"eventTO":{"calendarEventId":135,}}
    }

    {june:[

        {"eventTO":{"calendarEventId":135,}}

        {"eventTO":{"calendarEventId":135,}}

        {"eventTO":{"calendarEventId":135,}}

        {"eventTO":{"calendarEventId":135,}}

         ]
    }
    ...
}
你可以用自己的方式转换它

样本如下:

参考:

更新:

public class CalendarEvents
    {
        public List<EventsHB> eventsHB { get; set; }
    }

    public class EventsHB
    {
        public string month { get; set; }
        public EventTO eventTO { get; set; }
    }
    public class EventTO
    { 
        public string calendarEventId { get; set; }
        public string title { get; set; }
        public long startDate { get; set; }
        public string startTime { get; set; }
    }
"eventsHB": [
        {
            "eventTO": {
                "calendarEventId": 136,
                "title": " school event",
                "startDate": 1561006800000,
                "startTime": "6:15 PM"
            },
            "month": "July"
        },
        {
            "eventTO": {
                "calendarEventId": 139,
                "title": "New Admission Day"
                "startDate": 1560834000000
                "startTime": "10:00 AM"
            },
            "month": "July"
        },
        {
            "eventTO": {
                "calenderId": 810354,
                "title": "event pta"
                "startDate": 1559710800000,
                "startTime": "10:00 AM"
            },
            "month": "June"
        },
       {
            "eventTO": {
                "calendarEventId": 89,
                "title": "Memorial Day Meet",
                "startDate": 1559365200000,
                "startTime": "8:00 AM"
            },
            "month": "June"
        }
    ]
 <ListView x:Name="MyEventsListview"
                      HasUnevenRows="True"
                      ItemsSource="{Binding AllItems,Mode=TwoWay}">
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <ViewCell>
                            <ViewCell.View>

                                <StackLayout
                                    Orientation="Vertical">

                                        <Label 
                                        Text="{Binding month}"/>

                                        <StackLayout
                                Orientation="Horizontal">

                                            <Grid>
                                                <Grid.ColumnDefinitions>
                                                    <ColumnDefinition Width="50*" />
                                                    <ColumnDefinition Width="50*" />
                                                </Grid.ColumnDefinitions>

                                                <StackLayout
                                            Grid.Column="0"
                                            Orientation="Vertical">

                                                    <Label 
                                            Text="{Binding eventTO.startDate,  Converter={StaticResource dayConverter}}"/>

                                                    <Label 
                                            Text="{Binding eventTO.startDate,  Converter={StaticResource dateConverter}}"/>

                                                    <Label 
                                            Text="{Binding eventTO.startTime}"/>
                                                </StackLayout>

                                                <Label 
                                        Text="{Binding eventTO.title}"/>
                                            </Grid>
                                        </StackLayout>
                                </StackLayout>
                            </ViewCell.View>
                        </ViewCell>
                    </DataTemplate>
                </ListView.ItemTemplate>
              </ListView>
            HttpClient client = new HttpClient();
                var Response = await client.GetAsync("My REST Call");
                if (Response.IsSuccessStatusCode)
                {
                    string response = await Response.Content.ReadAsStringAsync();
                    myevents = new CalendarEvents();
                    if (response != "")
                    {
                        myevents = JsonConvert.DeserializeObject<CalendarEvents>(response.ToString());
                    }
                    AllItems = new ObservableCollection<EventsHB>(myevents.eventsHB);
在应用程序端转换数据结构非常复杂,我为您转换数据结构,并在项目中更新代码的任何地方添加注释

出现异常的原因是因为模型
EventsHB:observateCollection
,所以我在这里创建了一个新的模型来反序列化json

public class CalendarEvents
{
    //update here: here should be List<EventsHBTwo>
    public List<EventsHBTwo> eventsHB { get; set; }
}

//update use this one to shou grouped list data
public class EventsHB : ObservableCollection<EventTO>
{
    public string month { get; set; }
    public EventTO eventTO { get; set; }
}

//Update: use this one to deserialize json
public class EventsHBTwo
{
    public string month { get; set; }
    public EventTO eventTO { get; set; }
}

正如MilanG在他的评论中所说,您可以对项目进行分组-ListView的内置功能。我想补充的是,我可以看到您将布局嵌套在其他布局中。您的视图层次结构看起来像StackLayout->StackLayout->Grid->StackLayout。我强烈建议您尝试将其尽可能扁平化-这可能会影响性能检查这里的官方组listView示例:。正如MilanG在他的评论中所说,您可以对listView的项-内置功能进行分组。我想添加的是,我可以看到您将布局嵌套在其他布局中。您的视图层次结构看起来像StackLayout->StackLayout->Grid->StackLayout。我强烈建议您尝试将其尽可能扁平化-这可能会影响性能检查此处的官方组listView示例:。我已将所有代码添加到问题中,您是否可以建议解决方案提示。我已经浏览了问题中提供的链接,但仍然停留在实现上。我已将所有代码添加到问题中,您是否可以建议解决方案提示。我已经浏览了问题中提供的链接,但仍然停留在实现上。我尝试了您的解决方案,但遇到了一个异常。我现在已在问题中添加了我的代码和异常详细信息。问题与json反序列化有关,请您提供帮助。@SreejithSree您对json反序列化做了哪些更改ion?我没有更改json反序列化的任何代码。只是让它像以前一样工作。我正在使用以下RESTAPI