【发布时间】: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