【问题标题】:Xamarin Forms ListView ItemsSourceXamarin Forms ListView ItemsSource
【发布时间】:2017-01-05 05:08:24
【问题描述】:

我正在尝试在 Xamarin Forms 中使用 ListView,我有一个列表,我必须根据日期对其进行划分

var activitiesServices = new ActivitiesServices();
        var activities = activitiesServices.GetActivities();

        var dataTemplate = new DataTemplate(typeof(TextCell));
        dataTemplate.SetBinding(TextCell.TextProperty, "Subject");

        var list = new ObservableCollection<Activity>();
        var list2 = new ObservableCollection<Activity>();
        var list3 = new ObservableCollection<Activity>();
        var list4 = new ObservableCollection<Activity>();
        var list5 = new ObservableCollection<Activity>();
        foreach (Activity item in activities) {
            var day = item.StartTime.DayOfWeek;
            switch ((int)day) {
                case 1:
                    list.Add(item);
                    break;
                case 2:
                    list2.Add(item);
                    break;
                case 3:
                    list3.Add(item);
                    break;
                case 4:
                    list4.Add(item);
                    break;
                case 5:
                    list5.Add(item);
                    break;
                default:
                    break;
            }}

到这里为止一切顺利,但是当我尝试填充主列表视图(在 xaml 中定义)时,它给了我一个错误:

           if (list.Count != 0) {
            monday.ItemsSource = list;
            monday.ItemTemplate = dataTemplate;
        }
        if (list2.Count != 0) {
            tuesday.ItemsSource = list2;
            tuesday.ItemTemplate = dataTemplate;
        }
        if (list3.Count != 0) {
            wednesday.ItemsSource = list3;
            wednesday.ItemTemplate = dataTemplate;
        }
        if (list5.Count != 0) {
            friday.ItemsSource = list5;
            friday.ItemTemplate = dataTemplate;
        }
        if (list4.Count != 0) {
            thursday.ItemsSource = list4;
            thursday.ItemTemplate = dataTemplate;
        }

这是错误:System.NullReferenceException:对象引用未设置为对象的实例。

【问题讨论】:

  • 请在 XAML 中显示ListView 的定义
  • 就是这么简单
  • 你应该对你的 ListView 进行分组。 James Montemagno 的精彩解释:motzcod.es/post/94643411707/…
  • 好的,谢谢,我试试
  • 你能详细说明什么是 NULL 吗?

标签: listview xamarin.forms


【解决方案1】:

你可以试试Syncfusion提供的listview

在 XAML 中使用。这定义了组头模板

<syncfusion:SfListView x:Name="listView">
  <syncfusion:SfListView.GroupHeaderTemplate>
    <DataTemplate>
      <ViewCell>
        <ViewCell.View>
          <StackLayout BackgroundColor="#E4E4E4">
            <Label Text="{Binding Key}"
                   FontSize="22"
                   FontAttributes="Bold"
                   VerticalOptions="Center"
                   HorizontalOptions="Start"
                   Margin="20,0,0,0" />
          </StackLayout>
        </ViewCell.View>
      </ViewCell>
    </DataTemplate>
  </syncfusion:SfListView.GroupHeaderTemplate>
</syncfusion:SfListView>

它支持分组,看起来很适合你的情况。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 2020-04-09
    • 2019-09-15
    • 2017-08-05
    • 2016-11-13
    • 2019-04-23
    • 1970-01-01
    相关资源
    最近更新 更多