UIListView需要显示很多数据,创建几个label,但是之前版本还有case LISTVIEW_EVENT_UPDATE_CHILD:这个通过监听事件去更新items内容,现在cocos2d-x-2.2.2版本为什么就没有了,这叫怎么更新内容?求解释~
你好,你是从2.2.1版本升级上来的么?如果是这样的话listview可能对你影响很大,因为2.2.1中的两个listview类型中去除了老版本的listview,保留了listviewEX,并更名为listview。
那我应该肿么办?一点点去适配么?还是重新做一个~
一种方法,把原来的listview移植到2.2.2,要么就需要考虑重新设计了
但是动态添加还是能实现的
那我岂不是有多少数据,就要添加多少layout,加载的过程很慢的~
本来想做一个排行榜,用cocostudio做好的,上面有一个uilistview控件,其他添加items的内容在代码中实现,结果放到2.2.2上面就没了刷新内容的监听事件,然后就一个个去创建item然后添加,仅仅添加50个,需要一分多钟时间,这效率肯定不行,有没有好的办法解决?代码如下:
contentList = (cocos2d::gui::UIListView )m_pUiLayer->getWidgetByName(“net_listview”);
void NetScene::ListViewSetModel()
{
//name
UILabel label1 = UILabel::create();
label1->setText(“0”);
label1->setAnchorPoint(ccp(0.0f, 0.0f));
label1->setFontSize(18);
label1->setName(“name”);
Layout* item1 = Layout::create();
item1->setSize(label1->getSize());
label1->setPosition(ccp(0, 0));
item1->addChild(label1);
//win
UILabel* label2 = UILabel::create();
label2->setText("0");
label2->setAnchorPoint(ccp(0.0f, 0.0f));
label2->setFontSize(18);
label2->setName("win");
item1->setSize(label2->getSize());
label2->setPosition(ccp(130, 0));
item1->addChild(label2);
//fail
UILabel* label3 = UILabel::create();
label3->setText("0");
label3->setAnchorPoint(ccp(0.0f, 0.0f));
label3->setFontSize(18);
label3->setName("fail");
item1->setSize(label3->getSize());
label3->setPosition(ccp(130 + 80, 0));
item1->addChild(label3);
//win rate
UILabel* label4 = UILabel::create();
label4->setText("0");
label4->setAnchorPoint(ccp(0.0f, 0.0f));
label4->setFontSize(18);
label4->setName("rate");
item1->setSize(label4->getSize());
label4->setPosition(ccp(130 + 80 + 80, 0));
item1->addChild(label4);
//rank
UILabel* label5 = UILabel::create();
label5->setText("0");
label5->setAnchorPoint(ccp(0.0f, 0.0f));
label5->setFontSize(18);
label5->setName("rank");
item1->setSize(label5->getSize());
label5->setPosition(ccp(130 + 80 + 80 + 60, 0));
item1->addChild(label5);
contentList->setItemModel(item1);
}
void NetScene::ShowListView()
{
contentList->setBounceEnabled(true);
contentList->setTouchEnabled(true);
int items_count = sGlobal->dataProcess->rankList->size();
list<rank_data>::iterator list_pos;
ListViewSetModel();
for (list_pos = sGlobal->dataProcess->rankList->begin();list_pos!=sGlobal->dataProcess->rankList->end();list_pos++)
{
if (list_pos == sGlobal->dataProcess->rankList->begin())
{
continue;
}
contentList->pushBackDefaultItem();
iRankItemNum++;
}
}
版主你们什么意思啊,这样cocos2d-x2.2.2的GUI里面都没有一个可以实现复用的ListView,让我们怎么用,改不会改,问你们也不说。直接贴出个解决方案出来不行吗,或者是直接贴出个代码,我们直接覆盖到底层Code里面不行嘛