У меня есть эта ошибка, когда я перезагружаю 3 ListView на странице, и я не могу перехватить, где это происходит.
В коде позади я обновляю измерение списков при появлении элемента.
В модели представления у меня есть метод, вызываемый MessagingCenter, который выполняет задачу вставки элемента в правильный просмотр списка.
System.ArgumentOutOfRangeExceptionSpecified argument was out of the range of valid values. Parameter name: index
06-27 15:22:16.838 I/MonoDroid(12406): UNHANDLED EXCEPTION:
06-27 15:22:16.894 I/MonoDroid(12406): System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values.
06-27 15:22:16.894 I/MonoDroid(12406): Parameter name: index
06-27 15:22:16.894 I/MonoDroid(12406): at Xamarin.Forms.ListProxy.get_Item (System.Int32 index) [0x0000b] in D:\agent\_work\1\s\Xamarin.Forms.Core\ListProxy.cs:127
06-27 15:22:16.894 I/MonoDroid(12406): at Xamarin.Forms.ListProxy.System.Collections.IList.get_Item (System.Int32 index) [0x00000] in D:\agent\_work\1\s\Xamarin.Forms.Core\ListProxy.cs:444
06-27 15:22:16.894 I/MonoDroid(12406): at Xamarin.Forms.Platform.Android.ListViewAdapter.GetDataTemplateForPath (System.Int32 indexPath) [0x00007] in D:\agent\_work\1\s\Xamarin.Forms.Platform.Android\Renderers\ListViewAdapter.cs:331
06-27 15:22:16.894 I/MonoDroid(12406): at Xamarin.Forms.Platform.Android.ListViewAdapter.GetPrototypicalCell (System.Int32 indexPath) [0x00012] in D:\agent\_work\1\s\Xamarin.Forms.Platform.Android\Renderers\ListViewAdapter.cs:355
06-27 15:22:16.894 I/MonoDroid(12406): at Xamarin.Forms.Platform.Android.ListViewAdapter.IsEnabled (System.Int32 position) [0x00023] in D:\agent\_work\1\s\Xamarin.Forms.Platform.Android\Renderers\ListViewAdapter.cs:388
06-27 15:22:16.894 I/MonoDroid(12406): at Android.Widget.BaseAdapter.n_IsEnabled_I (System.IntPtr jnienv, System.IntPtr native__this, System.Int32 position) [0x00008] in <8211f1f12f9e45838d631abf63e51c79>:0
06-27 15:22:16.894 I/MonoDroid(12406): at (wrapper dynamic-method) System.Object:1ea77dfa-202b-4d75-ab0a-510fd6f70323 (intptr,intptr,int)
Метод вызывается при получении предмета:
MessagingCenter.Subscribe<ItemTaskMessage>(this, "ItemTaskMessage", async message =>
{
//insert the item in the right listview
};
Метод в коде позади OnItemAppearing
private async void OnItemAppearing(object sender, ItemVisibilityEventArgs args)
{
//calculate the dimension of the lists.
base.OnAppearing();
try
{
ListViewItem.HeightRequest = ((HomePageViewModel)this.BindingContext).ItemGroups.Count * ListViewItem.RowHeight + 10;
ListViewItem2.HeightRequest = (((HomePageViewModel)this.BindingContext).Item2Groups.Count * ListViewItem2.RowHeight) + 10;
ListViewItem3.HeightRequest = (((HomePageViewModel)this.BindingContext).Item3Groups.Count * ListViewItem3.RowHeight)+ 10;
}
catch (Exception) { }
}
Версия Xamarin.Forms 2.5.1.527436
Заранее спасибо