3 using Tizen.NUI.BaseComponents;
4 using Tizen.NUI.CommonUI;
5 using System.Collections.Generic;
7 namespace NuiCommonUiSamples
9 public class ListItemData
13 public ListItemData(int i)
15 str = "Text" + i.ToString();
18 public string TextString
27 public class ListItemView : View
29 private TextLabel mText;
33 mText = new TextLabel();
34 mText.WidthResizePolicy = ResizePolicyType.FillToParent;
35 mText.HeightResizePolicy = ResizePolicyType.FillToParent;
37 mText.HorizontalAlignment = HorizontalAlignment.Center;
38 mText.VerticalAlignment = VerticalAlignment.Center;
42 public string MainText
55 public class ListBridge : Tizen.NUI.CommonUI.FlexibleView.Adapter
57 private List<ListItemData> mDatas;
59 public ListBridge(List<ListItemData> datas)
64 public void InsertData(int position)
66 mDatas.Insert(position, new ListItemData(1000 + position));
67 NotifyItemInserted(position);
70 public void RemoveData(int position)
72 mDatas.RemoveAt(position);
73 NotifyItemRemoved(position);
76 public override Tizen.NUI.CommonUI.FlexibleView.ViewHolder OnCreateViewHolder(int viewType)
78 Tizen.NUI.CommonUI.FlexibleView.ViewHolder viewHolder = new Tizen.NUI.CommonUI.FlexibleView.ViewHolder(new ListItemView());
79 //Console.WriteLine($"OnCreateViewHolder... viewType: {viewType} viewID: {viewHolder.ItemView.ID}");
84 public override void OnBindViewHolder(Tizen.NUI.CommonUI.FlexibleView.ViewHolder holder, int position)
86 //Console.WriteLine($"OnBindItemView... position: {position}");
87 ListItemData listItemData = mDatas[position];
89 ListItemView listItemView = holder.ItemView as ListItemView;
90 listItemView.Name = "Item" + position;
91 //Random rd = new Random();
92 listItemView.SizeWidth = 150;
93 listItemView.SizeHeight = 60;
94 if (listItemView != null)
96 listItemView.MainText = String.Format("{0:D2}", position) + " : " + listItemData.TextString;
98 listItemView.Margin = new Extents(2, 2, 2, 2);
99 if (position % 2 == 0)
100 listItemView.BackgroundColor = Color.Cyan;
102 listItemView.BackgroundColor = Color.Yellow;
105 public override void OnDestroyViewHolder(Tizen.NUI.CommonUI.FlexibleView.ViewHolder holder)
107 //Console.WriteLine($"OnDestroyViewHolder... viewID: {holder.ItemView?.ID}");
108 if (holder.ItemView != null)
110 holder.ItemView.Dispose();
114 public override int GetItemCount()
119 public override void OnFocusChange(Tizen.NUI.CommonUI.FlexibleView flexibleView, int previousFocus, int currentFocus)
121 Tizen.NUI.CommonUI.FlexibleView.ViewHolder previousFocusView = flexibleView.FindViewHolderForAdapterPosition(previousFocus);
122 if (previousFocusView != null)
124 //Console.WriteLine($"previousFocus {previousFocus.AdapterPosition}");
125 if (previousFocusView.AdapterPosition % 2 == 0)
126 previousFocusView.ItemView.BackgroundColor = Color.Cyan;
128 previousFocusView.ItemView.BackgroundColor = Color.Yellow;
129 //previousFocus.SizeWidth = 150;
130 //previousFocus.SizeHeight = 60;
131 //NotifyItemChanged(previousFocus.AdapterPosition);
133 Tizen.NUI.CommonUI.FlexibleView.ViewHolder currentFocusView = flexibleView.FindViewHolderForAdapterPosition(currentFocus);
134 if (currentFocusView != null)
136 //Console.WriteLine($"currentFocus {currentFocus.AdapterPosition}");
137 currentFocusView.ItemView.BackgroundColor = Color.Magenta;
138 //currentFocus.SizeWidth = 200;
139 //currentFocus.SizeHeight = 100;
140 //NotifyItemChanged(currentFocus.AdapterPosition);
144 public override void OnViewAttachedToWindow(Tizen.NUI.CommonUI.FlexibleView.ViewHolder holder)
146 //Console.WriteLine($"+Attached: {holder.AdapterPosition}");
149 public override void OnViewDetachedFromWindow(Tizen.NUI.CommonUI.FlexibleView.ViewHolder holder)
151 //Console.WriteLine($" --Detached: {holder.AdapterPosition}");
156 public class FlexibleView : IExample
158 private SampleLayout root;
159 private Tizen.NUI.CommonUI.FlexibleView flexibleView1;
160 private Tizen.NUI.CommonUI.FlexibleView flexibleView2;
161 private ListBridge adapter;
163 private ScrollBar scrollBar1;
164 private ScrollBar scrollBar2;
166 public void Activate()
168 Window.Instance.BackgroundColor = Color.White;
169 root = new SampleLayout(false);
170 root.HeaderText = "FlexibleView";
172 flexibleView1 = new Tizen.NUI.CommonUI.FlexibleView();
173 flexibleView1.Name = "FlexibleView1";
174 flexibleView1.Position2D = new Position2D(300, 20);
175 flexibleView1.Size2D = new Size2D(400, 450);
176 flexibleView1.Padding = new Extents(10, 10, 10, 10);
177 flexibleView1.BackgroundColor = new Color(0.0f, 0.0f, 0.0f, 0.4f);
179 List<ListItemData> dataList = new List<ListItemData>();
180 for (int i = 0; i < 131; ++i)
182 dataList.Add(new ListItemData(i));
184 adapter = new ListBridge(dataList);
185 flexibleView1.SetAdapter(adapter);
187 LinearLayoutManager layoutManager1 = new LinearLayoutManager(LinearLayoutManager.VERTICAL);
188 //GridLayoutManager layoutManager1 = new GridLayoutManager(3, LinearLayoutManager.VERTICAL);
189 flexibleView1.SetLayoutManager(layoutManager1);
191 root.Add(flexibleView1);
193 scrollBar1 = new ScrollBar("DAScrollbar");
194 scrollBar1.Direction = ScrollBar.DirectionType.Vertical;
195 scrollBar1.Position2D = new Position2D(394, 2);
196 scrollBar1.Size2D = new Size2D(4, 446);
197 scrollBar1.ThumbSize = new Size2D(4, 30);
198 flexibleView1.AttachScrollBar(scrollBar1);
201 flexibleView2 = new Tizen.NUI.CommonUI.FlexibleView();
202 flexibleView2.Name = "FlexibleView2";
203 flexibleView2.Position2D = new Position2D(150, 520);
204 flexibleView2.Size2D = new Size2D(700, 200);
205 flexibleView2.Padding = new Extents(10, 10, 10, 10);
206 flexibleView2.BackgroundColor = new Color(0.0f, 0.0f, 0.0f, 0.4f);
208 flexibleView2.SetAdapter(adapter);
210 GridLayoutManager layoutManager2 = new GridLayoutManager(3, LinearLayoutManager.HORIZONTAL);
211 flexibleView2.SetLayoutManager(layoutManager2);
213 root.Add(flexibleView2);
215 scrollBar2 = new ScrollBar("DAScrollbar");
216 scrollBar2.Position2D = new Position2D(2, 194);
217 scrollBar2.Size2D = new Size2D(696, 4);
218 scrollBar2.ThumbSize = new Size2D(30, 4);
219 flexibleView2.AttachScrollBar(scrollBar2);
224 public void Deactivate()
226 flexibleView1.DetachScrollBar();
227 scrollBar1.Dispose();
228 flexibleView2.DetachScrollBar();
229 scrollBar2.Dispose();
231 root.Remove(flexibleView1);
232 flexibleView1.Dispose();
233 root.Remove(flexibleView2);
234 flexibleView2.Dispose();