void CAListView::recoveryCell() { DRect rect = this->getBounds(); rect.origin = getContentOffset(); rect.origin.y -= rect.size.height * 0.1f; rect.origin.x -= rect.size.width * 0.1f; rect.size.width *= 1.2f; rect.size.height *= 1.2f; std::map<unsigned int, CAListViewCell*>::iterator itr; for (itr = m_mpUsedListCells.begin(); itr != m_mpUsedListCells.end(); itr++) { CAListViewCell* cell = itr->second; CC_CONTINUE_IF(cell == NULL); DRect cellRect = cell->getFrame(); CC_CONTINUE_IF(rect.intersectsRect(cellRect)); m_mpFreedListCells[cell->getReuseIdentifier()].pushBack(cell); cell->removeFromSuperview(); cell->resetCell(); itr->second = NULL; m_vpUsedListCells.eraseObject(cell); CAView* line = m_pUsedLines[itr->first]; CC_CONTINUE_IF(line == NULL); m_pFreedLines.pushBack(line); line->removeFromSuperview(); m_pUsedLines[itr->first] = NULL; } }
void CAListView::clearData() { std::map<unsigned int, CAView*>::iterator it = m_pUsedLines.begin(); for (; it != m_pUsedLines.end(); ++it) { CAView* view = it->second; CC_CONTINUE_IF(view == NULL); m_pFreedLines.pushBack(view); view->removeFromSuperview(); } m_pUsedLines.clear(); m_mpUsedListCells.clear(); for (int i = 0; i < m_vpUsedListCells.size(); i++) { CAListViewCell* cell = m_vpUsedListCells.at(i); CC_CONTINUE_IF(cell == NULL); m_mpFreedListCells[cell->getReuseIdentifier()].pushBack(cell); cell->removeFromSuperview(); cell->resetCell(); } m_vpUsedListCells.clear(); m_nIndexs = 0; m_rIndexRects.clear(); m_rLineRects.clear(); m_rHeaderRect = m_rFooterRect = DRectZero; m_pHighlightedListCells = NULL; }