Exemple #1
0
        protected CellHandler GetUnUseCell()
        {
            for (int i = 0; i < m_CellHandlerList.Count; ++i)
            {
                if (m_CellHandlerList[i].dataIndex < 0)
                {
                    return(m_CellHandlerList[i]);
                }
            }

            CellHandler handler = new CellHandler(GameObject.Instantiate(itemPrefab.gameObject, content, false) as GameObject);

            m_CellHandlerList.Add(handler);
            return(handler);
        }
Exemple #2
0
        protected void RefreshListView()
        {
            // set the content size
            Vector2       size = GetContentSize();
            RectTransform contentRectTransform = content.transform as RectTransform;

            AdjustViewportSize(size);

            contentRectTransform.sizeDelta = size;

            // set the item postion and data
            int startIndex = GetStartIndex();

            if (startIndex < 0)
            {
                startIndex = 0;
            }

            int showItemNum = GetCurrentShowItemNum();

            ResetUnUsedCell(startIndex, startIndex + showItemNum);

            for (int i = 0; i < showItemNum; ++i)
            {
                int dataIndex = startIndex + i;
                if (dataIndex >= lstCount)
                {
                    break;
                }

                //Opt
                if (dataIndex >= m_PreDataIndexMin && dataIndex <= m_PreDataIndexMax)
                {
                    continue;
                }

                ///////////////
                CellHandler cell = GetUnUseCell();
                cell.dataIndex = dataIndex;
                cell.UpdatePosition(GetItemAnchorPos(dataIndex));
                ///////////////

                /*
                 *              GameObject go = GetItemGameObject(content, i);
                 *              if (false == go.activeSelf)
                 *              {
                 *                  go.SetActive(true);
                 *              }
                 *              RectTransform trans = go.transform as RectTransform;
                 *              trans.pivot = trans.anchorMin = trans.anchorMax = new Vector2(0.5f, 0.5f);
                 *              trans.anchoredPosition = GetItemAnchorPos(dataIndex);
                 *              trans.localScale = Vector3.one;
                 */
                if (m_CellRenderer != null)
                {
                    m_CellRenderer(cell.root, dataIndex);
                }
            }

            m_PreDataIndexMin = startIndex;
            m_PreDataIndexMax = startIndex + showItemNum - 1;

            UpdateCellActivityState();
            // dont show the extra items shown before
            //HideNonuseableItems ();

            // set the progress:
            int dataCount = GetDataCount();

            dataCount -= (GetMaxShowItemNum() - 2);
            if (dataCount < 1)
            {
                dataCount = 1;
            }
            float progress = (startIndex + 1) / (float)dataCount;

            progress = Mathf.Clamp01(progress);
            OnProgress(progress);
        }