需求是用ListView 做一个滑动列表出来,
但是查API发现,cocos-lua 的ListView并不支持多列滑动,毕竟触控不做更新很多年。
于是自己动手实现。
其实细究下,原理也挺简单
效果如下图所示
我们要实现竖着滑动的 3 列房间列表
那么首先要在CocosCreater中做一个Item对象
原理是 3个房间对象为一个item滑动对象
接下来,我们就要做计算处理
如果我们有3个房间的话,那么一个对象刚刚好,如果我们有四个房间的话,那么我们要实例化2个Item对象,然后把最后一个对象中的 后面俩个房间 setVisible(false)
就可以了
代码实现也挺简单,俩个计算方法就够了,向上取整和取余
直接上代码
self.tmpData = {}
for i=1,10 do
self.tmpData[i] = i
end
data = self.tmpData
self.FaXianPanelRoot.Panel_roomList:setVisible(true)
local mydata = {}
for i,data in ipairs(data) do
-- if data.dwGameID >0 then
mydata[#mydata] = data
-- end
end
low = math.ceil( #data / 3)
row = #data %3
print("============================================================")
print ("row:"..row)
print("low:"..low)
local lastItem
for i = 1, low do
local item = self.FaXianPanelRoot.Panel_roomList_ListViewItem:clone()
item:setVisible(true)
self.FaXianPanelRoot.Panel_roomList_ListView:pushBackCustomItem(item)
lastItem = item
end
if lastItem ~=nil and row ~=0 then
if row == 1 then
lastItem:getChildByName("item2"):setVisible(false)
lastItem:getChildByName("item3"):setVisible(false)
showToast(self,low,2)
elseif row ==2 then
lastItem:getChildByName("item3"):setVisible(false)
end
end
希望大家能看懂、看不懂的话、可以加交流群 一起学习吐槽!