1 function lxb.CoinsRankLayer:scrollViewUpdate(scrollView, visableHeight, lastY)
2 if scrollView == nil then
3 return 0;
4 end
5
6 -- 获取当前的innerY 滑动方向
7 local curInnerY = math.floor(scrollView:getInnerContainer():getPositionY());
8 local isScroll2Down = curInnerY > lastY;
9 local Items = scrollView:getChildren();
10
11 if #Items < LIMIT_COUNT then
12 return
13 end
14 -- 根据滑动方向对当前items进行排序 并获得第一个需要复用的item的Y
15 local reuseItemY = 0;
16 if isScroll2Down then
17 -- 大到小 高到低
18 table.sort(Items, function(a, b)
19 return a:getPositionY() > b:getPositionY();
20 end )
21 reuseItemY = Items[#Items]:getPositionY();
22 else
23 -- 小到大
24 table.sort(Items, function(a, b)
25 return a:getPositionY() < b:getPositionY();
26 end )
27
28 -- 获取顶部边界坐标
29 reuseItemY = Items[#Items]:getPositionY() + Items[#Items]:getContentSize().height;
30 end
31
32 for i = 1, #Items, 1 do
33 local item = Items[i];
34 if isScroll2Down then
35 if lxb.ScrollViewFunc:getItemPositionY(self.listView, item) > visableHeight then
36 if item.itemData.dataIndex == nil or item.itemData.dataIndex == 0 then break end
37 print("isScroll2Down item.itemData.dataIndex= curInnerY=", item.itemData.dataIndex, curInnerY);
38 local dataIndex = item.itemData.dataIndex + LIMIT_COUNT;
39 -- 获取数据Id
40 local data = self:getDataByIndex(dataIndex);
41 if data == nil then break end
42 print("isScroll2Down item.itemData.dataIndex continue");
43 item:resetPlayerInfoItemInfo(data);
44 local posY = reuseItemY - item:getContentSize().height;
45 -- 获取要设置的底部坐标
46 reuseItemY = posY;
47 item:setPositionY(posY);
48 end
49 else
50 if lxb.ScrollViewFunc:getItemPositionY(self.listView, item) + item:getContentSize().height < -0 then
51 if item.itemData.dataIndex == nil or item.itemData.dataIndex == 0 then break end
52 local dataIndex = item.itemData.dataIndex - LIMIT_COUNT;
53 -- 获取数据Id
54 local data = self:getDataByIndex(dataIndex);
55 if data == nil then break end
56 item:resetPlayerInfoItemInfo(data);
57 item:setPositionY(reuseItemY);
58 reuseItemY = reuseItemY + item:getContentSize().height;
59 end
60 end
61 end
62 return curInnerY;
63 end
item.itemData自己维护该数据