static int lua_cocos2dx_UIListView_addEventListenerListView(lua_State* L) { if (nullptr == L) return 0; int argc = 0; UIListView* self = nullptr; #if COCOS2D_DEBUG >= 1 tolua_Error tolua_err; if (!tolua_isusertype(L,1,"UIListView",0,&tolua_err)) goto tolua_lerror; #endif self = static_cast<UIListView*>(tolua_tousertype(L,1,0)); #if COCOS2D_DEBUG >= 1 if (nullptr == self) { tolua_error(L,"invalid 'self' in function 'lua_cocos2dx_UIListView_addEventListenerListView'\n", NULL); return 0; } #endif argc = lua_gettop(L) - 1; if (1 == argc) { #if COCOS2D_DEBUG >= 1 if (!toluafix_isfunction(L,2,"LUA_FUNCTION",0,&tolua_err)) { goto tolua_lerror; } #endif LuaCocoStudioEventListener* listern = LuaCocoStudioEventListener::create(); if (nullptr == listern) { tolua_error(L,"LuaCocoStudioEventListener create fail\n", NULL); return 0; } LUA_FUNCTION handler = ( toluafix_ref_function(L,2,0)); ScriptHandlerMgr::getInstance()->addObjectHandler((void*)listern, handler, ScriptHandlerMgr::HandlerType::EVENT_LISTENER); self->setUserObject(listern); self->addEventListenerListView(listern, listvieweventselector(LuaCocoStudioEventListener::eventCallbackFunc)); return 0; } CCLOG("'addEventListenerListView' function of UIListView has wrong number of arguments: %d, was expecting %d\n", argc, 1); return 0; #if COCOS2D_DEBUG >= 1 tolua_lerror: tolua_error(L,"#ferror in function 'addEventListenerListView'.",&tolua_err); return 0; #endif }
bool UIListViewExTest_Horizontal::init() { if (UIScene::init()) { CCSize widgetSize = m_pWidget->getSize(); m_pDisplayValueLabel = UILabel::create(); m_pDisplayValueLabel->setText("Move by horizontal direction"); m_pDisplayValueLabel->setFontName("Marker Felt"); m_pDisplayValueLabel->setFontSize(32); m_pDisplayValueLabel->setAnchorPoint(ccp(0.5f, -1)); m_pDisplayValueLabel->setPosition(ccp(widgetSize.width / 2.0f, widgetSize.height / 2.0f + m_pDisplayValueLabel->getContentSize().height * 1.5)); m_pUiLayer->addWidget(m_pDisplayValueLabel); UILabel* alert = UILabel::create(); alert->setText("ListView horizontal"); alert->setFontName("Marker Felt"); alert->setFontSize(30); alert->setColor(ccc3(159, 168, 176)); alert->setPosition(ccp(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getSize().height * 3.075)); m_pUiLayer->addWidget(alert); Layout* background = dynamic_cast<Layout*>(m_pUiLayer->getWidgetByName("background_Panel")); CCSize backgroundSize = background->getContentSize(); // create list view data m_array = CCArray::create(); CC_SAFE_RETAIN(m_array); for (int i = 0; i < 20; ++i) { CCString* ccstr = CCString::createWithFormat("listview_item_%d", i); m_array->addObject(ccstr); } // Create the list view UIListView* listView = UIListView::create(); // set list view direction listView->setDirection(SCROLLVIEW_DIR_HORIZONTAL); listView->setTouchEnabled(true); listView->setBounceEnabled(true); listView->setBackGroundImage("cocosgui/green_edit.png"); listView->setBackGroundImageScale9Enabled(true); listView->setSize(CCSizeMake(240, 130)); listView->setPosition(ccp((widgetSize.width - backgroundSize.width) / 2 + (backgroundSize.width - listView->getSize().width) / 2, (widgetSize.height - backgroundSize.height) / 2 + (backgroundSize.height - listView->getSize().height) / 2)); listView->addEventListenerListView(this, listvieweventselector(UIListViewExTest_Horizontal::selectedItemEvent)); m_pUiLayer->addWidget(listView); // create model UIButton* default_button = UIButton::create(); default_button->setName("TextButton"); default_button->setTouchEnabled(true); default_button->loadTextures("cocosgui/backtotoppressed.png", "cocosgui/backtotopnormal.png", ""); Layout* default_item = Layout::create(); default_item->setTouchEnabled(true); default_item->setSize(default_button->getSize()); default_button->setPosition(ccp(default_item->getSize().width / 2, default_item->getSize().height / 2)); default_item->addChild(default_button); // set model listView->setItemModel(default_item); // add default item int count = m_array->count(); for (int i = 0; i < count / 4; ++i) { listView->pushBackDefaultItem(); } // insert default item for (int i = 0; i < count / 4; ++i) { listView->insertDefaultItem(0); } // add custom item for (int i = 0; i < count / 4; ++i) { UIButton* custom_button = UIButton::create(); custom_button->setName("TextButton"); custom_button->setTouchEnabled(true); custom_button->loadTextures("cocosgui/button.png", "cocosgui/buttonHighlighted.png", ""); custom_button->setScale9Enabled(true); custom_button->setSize(default_button->getSize()); Layout *custom_item = Layout::create(); custom_item->setSize(custom_button->getSize()); custom_button->setPosition(ccp(custom_item->getSize().width / 2, custom_item->getSize().height / 2)); custom_item->addChild(custom_button); listView->pushBackCustomItem(custom_item); } // insert custom item CCArray *items = listView->getItems(); int items_count = items->count(); for (int i = 0; i < count / 4; ++i) { UIButton* custom_button = UIButton::create(); custom_button->setName("TextButton"); custom_button->setTouchEnabled(true); custom_button->loadTextures("cocosgui/button.png", "cocosgui/buttonHighlighted.png", ""); custom_button->setScale9Enabled(true); custom_button->setSize(default_button->getSize()); Layout *custom_item = Layout::create(); custom_item->setSize(custom_button->getSize()); custom_button->setPosition(ccp(custom_item->getSize().width / 2, custom_item->getSize().height / 2)); custom_item->addChild(custom_button); listView->insertCustomItem(custom_item, items_count); } // set item data items_count = items->count(); for (int i = 0; i < items_count; ++i) { UIWidget *item = listView->getItem(i); UIButton *button = static_cast<UIButton*>(item->getChildByName("TextButton")); int index = listView->getIndex(item); button->setTitleText(static_cast<CCString*>(m_array->objectAtIndex(index))->getCString()); } // remove last item listView->removeLastItem(); // remove item by index items_count = items->count(); listView->removeItem(items_count - 1); // set all items layout gravity listView->setGravity(LISTVIEW_GRAVITY_CENTER_VERTICAL); // set items margin listView->setItemsMargin(2); return true; } return false; }