示例#1
0
        public void RefreshItemsLayoutInEditor()
        {
            if (Application.isPlaying)
            {
                return;
            }

            RefreshMaxRowAndColumnAmount();
            for (int i = 0; i < itemList.Count; i++)
            {
                ScrollItem item = itemList[i];
                item.SetSize(cellSize);
                Vector2 itemPos = CalculateIndexItemAnchorPosition(i);
                item.SetAnchorPosition(itemPos);
                item.SetSize(cellSize);
            }
        }
示例#2
0
        public void UpdateItemsVisibility()
        {
            //hide items
            int itemNeedStartDataIndex;
            int itemNeedEndDataIndex;

            if (startAxis == Axis.Horizontal)
            {
                itemNeedStartDataIndex = VisibleRowStartIndex * maxColumnAmount;
                itemNeedEndDataIndex   = VisibleRowEndIndex * maxColumnAmount;
            }
            else
            {
                itemNeedStartDataIndex = VisibleColumnStartIndex * maxRowAmount;
                itemNeedEndDataIndex   = VisibleColumnEndIndex * maxRowAmount;
            }

            for (int i = itemList.Count - 1; i >= 0; i--)
            {
                ScrollItem item = itemList[i];

                if (item.dataIndex >= dataAmount)
                {
                    PutItemBackToPool(item);
                    itemList.RemoveAt(i);
                    continue;
                }

                if (item.dataIndex < itemNeedStartDataIndex)
                {
                    PutItemBackToPool(item);
                    itemList.RemoveAt(i);
                    continue;
                }

                if (item.dataIndex > itemNeedEndDataIndex)
                {
                    PutItemBackToPool(item);
                    itemList.RemoveAt(i);
                }
            }

            //new items
            for (int i = itemNeedStartDataIndex; i <= itemNeedEndDataIndex; i++)
            {
                if (i < 0 || i >= dataAmount)
                {
                    continue;
                }

                ScrollItem item = GetItemAtDataIndex(i);
                if (item == null)
                {
                    item = GetItemFromPool();
                    itemList.Add(item);
                    if (onItemNeedRefreshContentCallback != null)
                    {
                        onItemNeedRefreshContentCallback.Call(i, item.itemLuaClass);
                    }
                }

                item.SetSize(cellSize);
                item.SetDataIndex(i);
                Vector2 itemPosition = CalculateIndexItemAnchorPosition(i);
                item.SetAnchorPosition(itemPosition);
            }
        }