/** * Removes a cell at a given index * * @param idx index to find a cell */ public void RemoveCellAtIndex(int idx) { if (idx == CCArrayForObjectSorting.CC_INVALID_INDEX) { return; } var uCountOfItems = m_pDataSource.NumberOfCellsInTableView(this); if (uCountOfItems == 0 || idx > uCountOfItems - 1) { return; } int newIdx; CCTableViewCell cell = CellAtIndex(idx); if (cell == null) { return; } newIdx = m_pCellsUsed.IndexOfSortedObject(cell); //remove first _moveCellOutOfSight(cell); m_pIndices.Remove(idx); // [m_pIndices shiftIndexesStartingAtIndex:idx+1 by:-1]; for (int i = m_pCellsUsed.Count - 1; i > newIdx; i--) { cell = (CCTableViewCell)m_pCellsUsed[i]; _setIndexForCell(cell.Index - 1, cell); } }
/** * Inserts a new cell at a given index * * @param idx location to insert */ public void InsertCellAtIndex(int idx) { if (idx == CCArrayForObjectSorting.CC_INVALID_INDEX) { return; } var uCountOfItems = m_pDataSource.NumberOfCellsInTableView(this); if (uCountOfItems == 0 || idx > uCountOfItems - 1) { return; } int newIdx; var cell = (CCTableViewCell)m_pCellsUsed.ObjectWithObjectID(idx); if (cell != null) { newIdx = m_pCellsUsed.IndexOfSortedObject(cell); for (int i = newIdx; i < m_pCellsUsed.Count; i++) { cell = (CCTableViewCell)m_pCellsUsed[i]; _setIndexForCell(cell.Index + 1, cell); } } // [m_pIndices shiftIndexesStartingAtIndex:idx by:1]; //insert a new cell cell = m_pDataSource.TableCellAtIndex(this, idx); _setIndexForCell(idx, cell); _addCellIfNecessary(cell); _updateContentSize(); }