Ejemplo n.º 1
0
        void OnScroll(float value)
        {
            var oldTopHiddenItems = topHiddenItems;

            topHiddenItems    = GetFirstVisibleIndex();
            bottomHiddenItems = Math.Max(0, strings.Count - visibleItems - topHiddenItems);

            if (oldTopHiddenItems == topHiddenItems)
            {
                //do nothing
            }
            // optimization on +-1 item scroll
            else if (oldTopHiddenItems == (topHiddenItems + 1))
            {
                var bottomComponent = ComponentTopToBottom();

                bottomComponent.Index     = topHiddenItems;
                bottomComponent.Text.text = strings[topHiddenItems];
                Coloring(bottomComponent);
            }
            else if (oldTopHiddenItems == (topHiddenItems - 1))
            {
                var topComponent = ComponentBottomToTop();

                var new_index = topHiddenItems + visibleItems - 1;
                topComponent.Index     = new_index;
                topComponent.Text.text = strings[new_index];
                Coloring(topComponent);
            }
            // all other cases
            else
            {
                //!
                var new_indicies = Enumerable.Range(topHiddenItems, visibleItems).ToArray();
                components.ForEach((x, i) => {
                    x.Index     = new_indicies[i];
                    x.Text.text = strings[new_indicies[i]];
                    Coloring(x);
                });
            }

            UpdateTopFiller();
            UpdateBottomFiller();
            if (layout)
            {
                layout.NeedUpdateLayout();
            }
        }
Ejemplo n.º 2
0
        protected void UpdateView()
        {
            RemoveCallbacks();

            if ((CanOptimize()) && (customItems.Count > 0))
            {
                visibleItems = (maxVisibleItems < customItems.Count) ? maxVisibleItems : customItems.Count;
            }
            else
            {
                visibleItems = customItems.Count;
            }

            components = GetNewComponents();

            var base_items = new List <ListViewItem>();

            components.ForEach(x => base_items.Add(x));

            base.Items = base_items;

            components.ForEach((x, i) => {
                x.Index = i;
                SetData(x, customItems[i]);
                Coloring(x as ListViewItem);
            });

            AddCallbacks();

            topHiddenItems    = 0;
            bottomHiddenItems = customItems.Count() - visibleItems;

            SetTopFiller();
            SetBottomFiller();


                        #if UNITY_4_6_1
            // force ContentSizeFitter update text width
            //scrollRect.verticalScrollbar.value += 0.1f;
                        #endif

            if (layout)
            {
                //force rebuild
                layout.NeedUpdateLayout();
                //layout.UpdateLayout();
            }
        }