2017-06-16 148 views
0

我有一些代碼可以讓用戶添加一天(每天是一個ListViewItem),並通過刪除按鈕將日發送到自定義適配器。在適配器中,當點擊刪除按鈕時我會調用一個事件。我刪除的第一項刪除沒有問題,但對於下一個我得到一個NullReferenceException。林懷疑它必須做一個不正確的索引或東西。爲什麼我的ListViewItem不能刪除?

這段代碼來自片段。它接收從適配器發送的事件。我刪除的第一個項目就像它應該刪除的一樣,但它是唯一的一個。

 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); 

     }; 

這段代碼來自適配器。它將事件發送回片段。

 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)); 
     }; 
+2

的[刪除在C#中的ListView從項目]可能的複製(https://stackoverflow.com/questions/15572169/delete-items-from-listview-in-c-sharp) –

+0

您是否在使用Xamarin for IDE? – JavadKhan

+0

在哪一行拋出NullReferenceException?在刪除第一個元素之後,myItems集合可能被更改,並且位置索引可能不再有效,或者顯示給最初預期以外的元素。 –

回答

0

我發現了原因。只是刪除線

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

相關問題