cocos tableview


local MainScene = class("MainScene", function()
    return display.newScene("MainScene")
end)

function MainScene:ctor()
    cc.ui.UILabel.new({
            UILabelType = 2, text = "Hello, World", size = 64})
        :align(display.CENTER, display.cx, display.cy)
        :addTo(self)
end

function MainScene:onEnter()
	print("-----------------------onEnter ----------------------")
	self:initTableView()
end

function MainScene:onExit()
end

function MainScene:initTableView()
	local w,h = display.width,display.height
	--创建TableView  
    self.m_tableView = cc.TableView:create( cc.size( w/2, h - 100) );
	self.m_tableView:setName("table_view_name")
	self.m_tableView:setPosition(cc.p(0.25*w,0));
	self:addChild(self.m_tableView)
    --竖直从上往下排列  
    self.m_tableView:setVerticalFillOrder(cc.TABLEVIEW_FILL_TOPDOWN);  
    --设置代理  
    self.m_tableView:setDelegate();  

	self.m_tableView:registerScriptHandler( handler(self, self.scrollViewDidScroll),cc.SCROLLVIEW_SCRIPT_SCROLL);           --滚动时的回掉函数  
    self.m_tableView:registerScriptHandler( handler(self, self.cellSizeForTable), cc.TABLECELL_SIZE_FOR_INDEX);             --列表项的尺寸  
    self.m_tableView:registerScriptHandler( handler(self, self.tableCellAtIndex), cc.TABLECELL_SIZE_AT_INDEX);              --创建列表项  
    self.m_tableView:registerScriptHandler( handler(self, self.numberOfCellsInTableView), cc.NUMBER_OF_CELLS_IN_TABLEVIEW); --列表项的数量  
	
    self.m_tableView:reloadData();  	
end

function MainScene:scrollViewDidScroll(view)  
end  
  
function MainScene:cellSizeForTable(view, idx)  
    -- local panelRankItem = self.m_panelRankItem:clone();  
    -- iHeight = panelRankItem:getContentSize().height + panelRankItem:getLayoutParameter():getMargin().bottom;  
    -- return 0, iHeight;  
	
	return 200,200
end  
  
function MainScene:numberOfCellsInTableView(view)  
    return 10000;  --10个列表项  
end  
  
function MainScene:tableCellAtIndex(view, idx)  
    local index = idx + 1;  
    local cell = view:dequeueCell();  
  
    local panelRankItem = nil;  
    if nil == cell then  
        cell = cc.TableViewCell:new();  
        --创建列表项  
        local panelRankItem = ccui.Layout:create()
        --self:resetLabelNum(panelRankItem, index);  
        panelRankItem:setPosition(cc.p(0, 0));  
        panelRankItem:setTag(123);  
        cell:addChild(panelRankItem);  
		
		local v = ccui.ImageView:create()
		v:loadTexture("noavatar_middle.jpg")
		panelRankItem:addChild(v)
		v:setPosition(cc.p(60,60))
		
		local btn = ccui.Button:create("btn1.png","btn2.png")
		panelRankItem:addChild(btn)
		btn:setPosition(cc.p(60,60))
		panelRankItem:setSwallowTouches(false);
		btn:setSwallowTouches(false);
		
		local tex = ccui.Text:create()
		tex:setName("text")
		tex:setFontSize(30)
		tex:setString("".. idx)
		tex:setPosition(cc.p(30,30))
		panelRankItem:addChild(tex)
		
		local instance = self
		local function btn_click(sender,etype)
			print("etype = " .. etype)
			if etype == 2 then 
				instance.m_tableView:reloadData();
			end
		end
		btn:addTouchEventListener(btn_click)
    else  
        panelRankItem = cell:getChildByTag(123);  
		panelRankItem:getChildByName("text"):setString("".. idx)
        --self:resetLabelNum(panelRankItem, index);  
    end  
  
    return cell  
end 



return MainScene

猜你喜欢

转载自my.oschina.net/lyr/blog/1820029
今日推荐