From 0a6b92427b19e2ab5c074d6b4b880abae7bd72c9 Mon Sep 17 00:00:00 2001 From: "EverLEEst(SangHyeon Lee)" Date: Fri, 10 Mar 2023 15:49:15 +0900 Subject: [PATCH] [NUI] Fix collectionView Selection on Item. --- .../Controls/RecyclerView/Item/RecyclerViewItem.cs | 41 ++++++++++++++++++++-- .../RecyclerView/Layouter/LinearLayouter.cs | 2 +- 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/src/Tizen.NUI.Components/Controls/RecyclerView/Item/RecyclerViewItem.cs b/src/Tizen.NUI.Components/Controls/RecyclerView/Item/RecyclerViewItem.cs index edec1db..73d26ad 100755 --- a/src/Tizen.NUI.Components/Controls/RecyclerView/Item/RecyclerViewItem.cs +++ b/src/Tizen.NUI.Components/Controls/RecyclerView/Item/RecyclerViewItem.cs @@ -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"); + } } /// @@ -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"); + } } /// diff --git a/src/Tizen.NUI.Components/Controls/RecyclerView/Layouter/LinearLayouter.cs b/src/Tizen.NUI.Components/Controls/RecyclerView/Layouter/LinearLayouter.cs index 0aa5c9e..52bb6ec 100755 --- a/src/Tizen.NUI.Components/Controls/RecyclerView/Layouter/LinearLayouter.cs +++ b/src/Tizen.NUI.Components/Controls/RecyclerView/Layouter/LinearLayouter.cs @@ -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; -- 2.7.4