【问题标题】:Why is my ListViewItem not deleting?为什么我的 ListViewItem 没有删除?
【发布时间】:2017-06-16 12:06:40
【问题描述】:

我有一些代码可以让用户添加一天(每天都是一个 ListViewItem),然后将这一天发送到带有删除按钮的自定义适配器。在适配器中,我在单击删除按钮时调用一个事件。我删除的第一项删除没有问题,但下一项我得到 NullReferenceException。我怀疑它与不正确的索引或其他东西有关。

这个 sn-p 来自片段。它接收从适配器发送的事件。我删除的第一项删除了它应该删除的,但它是唯一的。

        Adapter1.OnDayDeleted += (o,e) =>
        {               
            Day day = e.Day;
            DM.ListOfDays.Remove(day);
            Adapter1.NotifyDataSetChanged();
            Adapter1 = new Adapters.DayObject(Activity, DM.ListOfDays);
            ListViewDays.Adapter = Adapter1;

            Helpers.Common.SetListViewHeightBasedOnChildren(ListViewDays);

        };

这个 sn-p 来自适配器。它将事件发送回片段。

        Button buttonRemoveDay = row.FindViewById<Button>(Resource.Id.buttonRemoveDay);
        buttonRemoveDay.Click += delegate
        {
            var day = myItems[position];

            //Console.WriteLine(day.Name);
            OnDayDeleted.Invoke(this, new OnDayDeletedEventArgs(day));
        };

【问题讨论】:

  • 你在使用 Xamarin 吗?
  • 在哪一行抛出 NullReferenceException?删除第一个元素后,myItems 集合可能会更改,并且位置索引可能不再有效,或者显示给原始预期之外的元素。
  • OnDayDeleted.Invoke(...);
  • 我点击了评论中的链接,它仍然是一样的。 NullReferenceException 在OnDayDelete.Invoke(...)

标签: c# android listview events


【解决方案1】:

我找到了原因。只需删除该行

Adapter1 = new Adapters.DayObject(Activity, DM.ListOfDays);

【讨论】:

    猜你喜欢
    • 2015-12-10
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多