public LoopStaggeredGridViewItem GetNewItemByGroupAndIndex(int groupIndex, int indexInGroup)
        {
            if (indexInGroup < 0)
            {
                return(null);
            }
            if (mItemTotalCount == 0)
            {
                return(null);
            }
            LoopStaggeredGridViewItem newItem = null;
            int        index         = 0;
            List <int> mItemIndexMap = mItemGroupList[groupIndex].ItemIndexMap;
            int        count         = mItemIndexMap.Count;

            if (count > indexInGroup)
            {
                index   = mItemIndexMap[indexInGroup];
                newItem = mOnGetItemByItemIndex(this, index);
                if (newItem == null)
                {
                    return(null);
                }
                newItem.StartPosOffset             = mLayoutParam.mCustomColumnOrRowOffsetArray[groupIndex];
                newItem.ItemIndexInGroup           = indexInGroup;
                newItem.ItemIndex                  = index;
                newItem.ItemCreatedCheckFrameCount = mListUpdateCheckFrameCount;
                return(newItem);
            }
            if (count != indexInGroup)
            {
                return(null);
            }
            int curMaxCreatedItemIndexCount = mItemIndexDataList.Count;

            if (curMaxCreatedItemIndexCount >= mItemTotalCount)
            {
                return(null);
            }
            index   = curMaxCreatedItemIndexCount;
            newItem = mOnGetItemByItemIndex(this, index);
            if (newItem == null)
            {
                return(null);
            }
            mItemIndexMap.Add(index);
            ItemIndexData indexData = new ItemIndexData();

            indexData.mGroupIndex   = groupIndex;
            indexData.mIndexInGroup = indexInGroup;
            mItemIndexDataList.Add(indexData);
            newItem.StartPosOffset             = mLayoutParam.mCustomColumnOrRowOffsetArray[groupIndex];
            newItem.ItemIndexInGroup           = indexInGroup;
            newItem.ItemIndex                  = index;
            newItem.ItemCreatedCheckFrameCount = mListUpdateCheckFrameCount;
            return(newItem);
        }
        public float GetItemAbsPosByItemIndex(int itemIndex)
        {
            if (itemIndex < 0 || itemIndex >= mItemIndexDataList.Count)
            {
                return(-1);
            }
            ItemIndexData tData = mItemIndexDataList[itemIndex];

            return(mItemGroupList[tData.mGroupIndex].GetItemPos(tData.mIndexInGroup));
        }
Exemple #3
0
        public float GetItemAbsPosByItemIndex(int itemIndex)
        {
            if (itemIndex < 0 || itemIndex >= this.mItemIndexDataList.Count)
            {
                return(-1f);
            }
            ItemIndexData mItemIndexData = this.mItemIndexDataList[itemIndex];

            return(this.mItemGroupList[mItemIndexData.mGroupIndex].GetItemPos(mItemIndexData.mIndexInGroup));
        }
Exemple #4
0
        public void RefreshItemByItemIndex(int itemIndex)
        {
            ItemIndexData itemIndexData = this.GetItemIndexData(itemIndex);

            if (itemIndexData == null)
            {
                return;
            }
            this.GetItemGroupByIndex(itemIndexData.mGroupIndex).RefreshItemByIndexInGroup(itemIndexData.mIndexInGroup);
        }
Exemple #5
0
        public void OnItemSizeChanged(int itemIndex)
        {
            ItemIndexData itemIndexData = this.GetItemIndexData(itemIndex);

            if (itemIndexData == null)
            {
                return;
            }
            this.GetItemGroupByIndex(itemIndexData.mGroupIndex).OnItemSizeChanged(itemIndexData.mIndexInGroup);
        }
        /*
         * To update a item by itemIndex.if the itemIndex-th item is not visible, then this method will do nothing.
         * Otherwise this method will first call onGetItemByIndex(itemIndex) to get a updated item and then reposition all visible items'position.
         */
        public void RefreshItemByItemIndex(int itemIndex)
        {
            ItemIndexData indexData = GetItemIndexData(itemIndex);

            if (indexData == null)
            {
                return;
            }
            StaggeredGridItemGroup group = GetItemGroupByIndex(indexData.mGroupIndex);

            group.RefreshItemByIndexInGroup(indexData.mIndexInGroup);
        }
        /*
         * For a vertical scrollrect, when a visible item’s height changed at runtime,
         * then this method should be called to let the LoopStaggeredGridView component reposition all visible items’ position of the same group (that is the same column / row).
         * For a horizontal scrollrect, when a visible item’s width changed at runtime,
         * then this method should be called to let the LoopStaggeredGridView component reposition all visible items’ position of the same group (that is the same column / row).
         */
        public void OnItemSizeChanged(int itemIndex)
        {
            ItemIndexData indexData = GetItemIndexData(itemIndex);

            if (indexData == null)
            {
                return;
            }
            StaggeredGridItemGroup group = GetItemGroupByIndex(indexData.mGroupIndex);

            group.OnItemSizeChanged(indexData.mIndexInGroup);
        }
        //To get the visible item by itemIndex. If the item is not visible, then this method return null.
        public LoopStaggeredGridViewItem GetShownItemByItemIndex(int itemIndex)
        {
            ItemIndexData indexData = GetItemIndexData(itemIndex);

            if (indexData == null)
            {
                return(null);
            }
            StaggeredGridItemGroup group = GetItemGroupByIndex(indexData.mGroupIndex);

            return(group.GetShownItemByIndexInGroup(indexData.mIndexInGroup));
        }
Exemple #9
0
        public LoopStaggeredGridViewItem GetShownItemByItemIndex(int itemIndex)
        {
            ItemIndexData itemIndexData = this.GetItemIndexData(itemIndex);

            return(itemIndexData == null ? (LoopStaggeredGridViewItem)null : this.GetItemGroupByIndex(itemIndexData.mGroupIndex).GetShownItemByIndexInGroup(itemIndexData.mIndexInGroup));
        }