[解决]Listview removeItem() removeAllItems() 问题

    CCLog("%d---------",pListview->getItems()->count());

//pListview->removeAllItems();//会剩下东西TODO
//pListview->removeFromParent();
CCLog(“gift_count = %d”,gift_count);
for(int i = 0;i < gift_count;i++){
CCLog(“i = %d”,i);
pListview->removeItem(i);}
CCLog("%d---------",pListview->getItems()->count());

LOG:

7---------
gift_count = 7
i = 0
i = 1
i = 2
i = 3
i = 4
i = 5
i = 6
3---------

为什么删不干净呢?

解决方法:

while(pListview->getItems()->count() > 0){
CCLog(“gift_count2 = %d”,pListview->getItems()->count());
pListview->removeItem(0);
}
用这个方法解决
removeAllItems() 这个方法可能有问题

哈~这么快解决了,不过根据方法来看确实存在写问题,我已经将问题提交给开发人员了,修复后会第一时间通知大家。感谢您对cocostudio的支持。

顺带说下,为何removeAllItems不调用_refreshViewDirty = true;呢,不能接受啊

楼主,我想说你第一种循环删除的问题在于,你第一次循环把第0个元素删除后,整个数组会前移,第1个元素就成了第0个元素了,所以你第二次循环删的其实是第2个元素,所以你删除的是0 2 4 6这四个而已,剩下了1 3 5三个了

void PageView::scrollToPage(int idx)
{
if (idx < 0 || idx >= (int)(_pages->count()))
{
return;
}
_curPageIdx = idx;
Widget* curPage = static_cast<Widget*>(_pages->objectAtIndex(idx));
_autoScrollDistance = -(curPage->getPosition().x);
_autoScrollSpeed = fabs(_autoScrollDistance)/0.2f;
_autoScrollDir = _autoScrollDistance > 0 ? 1 : 0;
_isAutoScrolling = true;
}

这个方法好像也有点问题?

请跟新的最新版(cocos2d-x2.2.3),该问题已经在cocos2d-x2.2.3版本中修复。感谢大家的反馈。