[NUI] Fix collectionView Selection on Item.
authorEverLEEst(SangHyeon Lee) <sh10233.lee@samsung.com>
Fri, 10 Mar 2023 06:49:15 +0000 (15:49 +0900)
committerSangHyeon Jade Lee <dltkdgus1764@gmail.com>
Tue, 14 Mar 2023 05:15:20 +0000 (14:15 +0900)
src/Tizen.NUI.Components/Controls/RecyclerView/Item/RecyclerViewItem.cs
src/Tizen.NUI.Components/Controls/RecyclerView/Layouter/LinearLayouter.cs

index edec1db..73d26ad 100755 (executable)
@@ -50,6 +50,35 @@ namespace Tizen.NUI.Components
                     {
                         instance.UpdateState();
                     }
+                    if (instance.ParentItemsView is CollectionView colView)
+                    {
+                        var context = instance.BindingContext;
+                        if (colView.SelectionMode is ItemSelectionMode.Single ||
+                            colView.SelectionMode is ItemSelectionMode.SingleAlways)
+                        {
+                            if (newSelected && colView.SelectedItem != context)
+                            {
+                                colView.SelectedItem = context;
+                            }
+                            else if (!newSelected && colView.SelectedItem == context)
+                            {
+                                colView.SelectedItem = null;
+                            }
+                        }
+                        else if (colView.SelectionMode is ItemSelectionMode.Multiple)
+                        {
+                            var selectedList = colView.SelectedItems;
+                            bool contains = selectedList.Contains(context);
+                            if (newSelected && !contains)
+                            {
+                                selectedList.Add(context);
+                            }
+                            else if (!newSelected && contains)
+                            {
+                                selectedList.Remove(context);
+                            }
+                        }
+                    }
                 }
             }
         },
@@ -123,7 +152,11 @@ namespace Tizen.NUI.Components
         public bool IsSelectable
         {
             get => (bool)GetValue(IsSelectableProperty);
-            set => SetValue(IsSelectableProperty, value);
+            set
+            {
+                SetValue(IsSelectableProperty, value);
+                OnPropertyChanged("IsSelectable");
+            }
         }
 
         /// <summary>
@@ -133,7 +166,11 @@ namespace Tizen.NUI.Components
         public bool IsSelected
         {
             get => (bool)GetValue(IsSelectedProperty);
-            set => SetValue(IsSelectedProperty, value);
+            set
+            {
+                SetValue(IsSelectedProperty, value);
+                OnPropertyChanged("IsSelected");
+            }
         }
 
         /// <summary>
index 0aa5c9e..52bb6ec 100755 (executable)
@@ -250,7 +250,7 @@ namespace Tizen.NUI.Components
                 CandidateMargin = new Extents(itemMargin);
                 if (StepCandidate == 0) StepCandidate = 1; //????
 
-                colView.UnrealizeItem(sizeDeligate);
+                colView.UnrealizeItem(sizeDeligate, false);
             }
 
             float Current = IsHorizontal? Padding.Start : Padding.Top;