public LoopListViewItem2 GetItem()
        {
            mCurItemIdCount++;
            LoopListViewItem2 tItem = null;

            if (mTmpPooledItemList.Count > 0)
            {
                int count = mTmpPooledItemList.Count;
                tItem = mTmpPooledItemList[count - 1];
                mTmpPooledItemList.RemoveAt(count - 1);
                tItem.gameObject.SetActive(true);
            }
            else
            {
                int count = mPooledItemList.Count;
                if (count == 0)
                {
                    tItem = CreateItem();
                }
                else
                {
                    tItem = mPooledItemList[count - 1];
                    mPooledItemList.RemoveAt(count - 1);
                    tItem.gameObject.SetActive(true);
                }
            }
            tItem.Padding = mPadding;
            tItem.ItemId  = mCurItemIdCount;
            return(tItem);
        }
 public void Init(GameObject prefabObj, float padding, float startPosOffset, int createCount, RectTransform parent)
 {
     mPrefabObj       = prefabObj;
     mPrefabName      = mPrefabObj.name;
     mInitCreateCount = createCount;
     mPadding         = padding;
     mStartPosOffset  = startPosOffset;
     mItemParent      = parent;
     mPrefabObj.SetActive(false);
     for (int i = 0; i < mInitCreateCount; ++i)
     {
         LoopListViewItem2 tViewItem = CreateItem();
         RecycleItemReal(tViewItem);
     }
 }
        public LoopListViewItem2 CreateItem()
        {
            GameObject go = GameObject.Instantiate <GameObject>(mPrefabObj, Vector3.zero, Quaternion.identity, mItemParent);

            go.SetActive(true);
            RectTransform rf = go.GetComponent <RectTransform>();

            rf.localScale         = Vector3.one;
            rf.anchoredPosition3D = Vector3.zero;
            rf.localEulerAngles   = Vector3.zero;
            LoopListViewItem2 tViewItem = go.GetComponent <LoopListViewItem2>();

            tViewItem.ItemPrefabName = mPrefabName;
            tViewItem.StartPosOffset = mStartPosOffset;
            return(tViewItem);
        }
 void RecycleItemReal(LoopListViewItem2 item)
 {
     item.gameObject.SetActive(false);
     mPooledItemList.Add(item);
 }
 public void RecycleItem(LoopListViewItem2 item)
 {
     // 避免刷新时视图跳动
     //mTmpPooledItemList.Add(item);
     mTmpPooledItemList.Insert(0, item);
 }