local spacing_height = 10 --控件之间的间距
function FriendScene:initTableView()
self._FriendPanel= self._MainPanel:getChildByName("FriendPanel") -- 随便一个scrollView
--创建TableView
self.m_tableView = cc.TableView:create(cc.size(self._FriendPanel:getContentSize().width,self._FriendPanel:getContentSize().height));
--TabelView添加到PanleMain
self._FriendPanel:addChild(self.m_tableView);
--self.m_tableView:setPosition(positionScroll);
self.m_tableView:setAnchorPoint(cc.p(0.5,0.5))
self.m_tableView:setPosition(cc.p(0,0))
--设置滚动方向
self.m_tableView:setDirection(self._FriendPanel:getDirection() );
--竖直从上往下排列
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 FriendScene:scrollViewDidScroll(view)
end
function FriendScene:cellSizeForTable(view, idx)
local FriendItem = require("app.platform.Hall.FriendItem"):create()
local iHeight = FriendItem:getContentSize().height + spacing_height --所要创建的控件的高度+间距
return 0, iHeight; --宽、高
end
function FriendScene:numberOfCellsInTableView(view)
return 30; --10个列表项
end
function FriendScene:tableCellAtIndex(view, idx)
local index = idx + 1;
local cell = view:dequeueCell();
local FriendItem = nil;
if nil == cell then
cell = cc.TableViewCell:new();
--创建列表项
local FriendItem = require("app.platform.Hall.FriendItem"):create()
FriendItem:setSwallowTouches(false)
self:resetLabelNum(FriendItem, index);
FriendItem:setPosition(cc.p(self.m_tableView:getContentSize().width/2, spacing_height));
FriendItem:setTag(456);
cell:addChild(FriendItem);
else
FriendItem = cell:getChildByTag(456);
self:resetLabelNum(FriendItem, index);
end
return cell
end
function FriendScene:resetLabelNum(FriendItem, index)
--do someting on FriendItem with index
end
参考http://blog.csdn.net/fjdmy001/article/details/52998376。
经测试对比如果使用listview,那么仅仅加载25个好友item,GL verts就已经破万,
如果使用上述tableView,无论好友多少,GL verts仅仅为数个需要显示的item的值。