From f96402a2113ae57be4975097735211c7678142b7 Mon Sep 17 00:00:00 2001 From: Makar Dezhemesov Date: Thu, 18 May 2023 14:52:31 +0300 Subject: [PATCH 1/2] Fix: ArgumentOutOfRange when deleting item from BindableListView --- .../Runtime/UITK/BindableUIElements/BindableListView.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/UnityMvvmToolkit.UnityPackage/Assets/Plugins/UnityMvvmToolkit/Runtime/UITK/BindableUIElements/BindableListView.cs b/src/UnityMvvmToolkit.UnityPackage/Assets/Plugins/UnityMvvmToolkit/Runtime/UITK/BindableUIElements/BindableListView.cs index fbb0cd0..b253386 100644 --- a/src/UnityMvvmToolkit.UnityPackage/Assets/Plugins/UnityMvvmToolkit/Runtime/UITK/BindableUIElements/BindableListView.cs +++ b/src/UnityMvvmToolkit.UnityPackage/Assets/Plugins/UnityMvvmToolkit/Runtime/UITK/BindableUIElements/BindableListView.cs @@ -90,7 +90,7 @@ private void BindItem(VisualElement item, int index) private void UnbindItem(VisualElement item, int index) { - UnbindItem(item, index, _itemsSource.Value[index], _objectProvider); + item.ResetBindingContext(_objectProvider, true); } private void OnItemsCollectionChanged(object sender, NotifyCollectionChangedEventArgs e) From b9ed57d16f3e7c945319126d6a6d9eda2412ee5d Mon Sep 17 00:00:00 2001 From: Makar Dezhemesov Date: Thu, 18 May 2023 15:13:36 +0300 Subject: [PATCH 2/2] Fix #11 --- .../BindableUIElements/BindableListView.cs | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/UnityMvvmToolkit.UnityPackage/Assets/Plugins/UnityMvvmToolkit/Runtime/UITK/BindableUIElements/BindableListView.cs b/src/UnityMvvmToolkit.UnityPackage/Assets/Plugins/UnityMvvmToolkit/Runtime/UITK/BindableUIElements/BindableListView.cs index b253386..25aa2ae 100644 --- a/src/UnityMvvmToolkit.UnityPackage/Assets/Plugins/UnityMvvmToolkit/Runtime/UITK/BindableUIElements/BindableListView.cs +++ b/src/UnityMvvmToolkit.UnityPackage/Assets/Plugins/UnityMvvmToolkit/Runtime/UITK/BindableUIElements/BindableListView.cs @@ -85,12 +85,26 @@ private VisualElement MakeItem() private void BindItem(VisualElement item, int index) { - BindItem(item, index, _itemsSource.Value[index], _objectProvider); + if (index >= 0 && index < itemsSource.Count) + { + BindItem(item, index, _itemsSource.Value[index], _objectProvider); + } + else + { + BindItem(item, index, default, _objectProvider); + } } private void UnbindItem(VisualElement item, int index) { - item.ResetBindingContext(_objectProvider, true); + if (index >= 0 && index < itemsSource.Count) + { + UnbindItem(item, index, _itemsSource.Value[index], _objectProvider); + } + else + { + UnbindItem(item, index, default, _objectProvider); + } } private void OnItemsCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)