private void UpdateContent(int cellIndex, bool scrollingPositive) { int index = scrollingPositive ? ((cellIndex - 1) * NUMBER_OF_COLUMNS) + (visibleCellsTotalCount) : (cellIndex * NUMBER_OF_COLUMNS); LinkedListNode <GameObject> tempCell = null; int currentDataIndex = 0; for (int i = 0; i < NUMBER_OF_COLUMNS; i++) { this.FreeCell(scrollingPositive); tempCell = GetCellFromPool(scrollingPositive); currentDataIndex = index + i; PositionCell(tempCell.Value, index + i); ScrollViewItemBase scrollableCell = tempCell.Value.GetComponent <ScrollViewItemBase>(); if (currentDataIndex >= 0 && currentDataIndex < allCellsData.Count) { scrollableCell.UpdateItemData(allCellsData[currentDataIndex]); } else { scrollableCell.UpdateItemData(null); } } }
/// <summary> /// when data changed use this /// </summary> /// <param name="cellDataList"></param> public void InitializeWithData(IList cellDataList) { if (this.rect == null) { return; } if (cellsInUse.Count > 0) { foreach (var cell in cellsInUse) { localCellsPool.AddLast(cell); } cellsInUse.Clear(); } else { if (horizontal) { initpostion = content.localPosition.x; } else { initpostion = content.localPosition.y; } } previousInitialIndex = 0; initialIndex = 0; content.gameObject.SetActive(true); LinkedListNode <GameObject> tempCell = null; allCellsData = cellDataList; setContentSize(); firstCellPostion = FirstCellPosition; int currentDataIndex = 0; for (int i = 0; i < visibleCellsTotalCount; i++) { tempCell = GetCellFromPool(true); if (tempCell == null || tempCell.Value == null) { continue; } currentDataIndex = i + initialIndex; PositionCell(tempCell.Value, currentDataIndex); tempCell.Value.SetActive(true); ScrollViewItemBase scrollableCell = tempCell.Value.GetComponent <ScrollViewItemBase>(); if (currentDataIndex < cellDataList.Count) { scrollableCell.UpdateItemData(cellDataList[i]); } else { scrollableCell.UpdateItemData(null); } } UpdateScrollView(Vector2.zero); }