你的代码有几个问题需要修正:
1. **获取子节点逻辑错误**:
```lua
local item_bj = GUI:getChildByName(ListView_fj, "item_bjk_" .. posInPage)
```
这里应该是`pageIndex`而不是`posInPage`,因为你要根据页数获取对应的item_bj
2. **内层循环逻辑错误**:
```lua
for i = 1, 6 do
local item = GUI:getChildByName(item_bj, "fj_item" .. pageIndex .. "_" .. i)
```
这个循环会重复创建6次,但实际只需要创建当前装备对应的那一个位置
3. **ItemShow_Create参数问题**:
根据浮生梦老师前端课程内容,`GUI:ItemShow_Create`的参数需要检查
修正后的代码:
```lua
GUI:setVisible(JM_show, true)
local item_Panel_1 = GUI:getChildByName(JM_show, "item_Panel_1")
local ListView_fj = GUI:getChildByName(JM_show, "ListView_fj")
GUI:removeAllChildren(ListView_fj)
local bagItems = SL:GetMetaValue("BAG_DATA")
local targetEquips = {}
if bagItems then
for _, itemData in pairs(bagItems) do
if itemData and itemData.StdMode and itemData.StdMode == 65 then
table.insert(targetEquips, itemData)
end
end
end
SL:dump(targetEquips)
local totalItems = #targetEquips
local pageCount = math.ceil(totalItems / 6)
-- 创建对应数量的item_bj
for i = 1, pageCount do
local item_bj = GUI:Clone(item_Panel_1)
GUI:setVisible(item_bj, true)
GUI:setName(item_bj, "item_bjk_" .. i)
GUI:addChild(ListView_fj, item_bj)
end
-- 遍历所有装备
for item_id, itemData in ipairs(targetEquips) do
local pageIndex = math.ceil(item_id / 6)
local posInPage = ((item_id - 1) % 6) + 1
-- 获取对应的item_bj
local item_bj = GUI:getChildByName(ListView_fj, "item_bjk_" .. pageIndex)
if not GUI:Win_IsNull(item_bj) then
-- 先移除可能存在的旧物品
local oldItem = GUI:getChildByName(item_bj, "fj_item" .. posInPage)
if not GUI:Win_IsNull(oldItem) then
GUI:removeChildByName(item_bj, GUI:getName(oldItem))
end
-- 创建物品显示
local itemDataTable = {
index = itemData.Index, -- 注意:这里应该是itemData.Index
look = true,
bgVisible = false,
count = 1,
color = 225
}
-- 创建物品显示控件
local itemWidget = GUI:ItemShow_Create(item_bj, "fj_item" .. posInPage, 0, 0, itemDataTable)
-- 设置位置(根据你的布局调整)
local x = ((posInPage - 1) % 3) * 60
local y = math.floor((posInPage - 1) / 3) * 60
GUI:setPosition(itemWidget, x, y)
end
end
```
主要修改:
1. 修正了获取item_bj的逻辑,使用`pageIndex`而不是`posInPage`
2. 移除了不必要的内层循环,每个装备只创建一次
3. 修正了itemData的索引访问方式
4. 添加了位置计算,使物品在item_bj中正确排列
注意:`GUI:ItemShow_Create`的具体参数需要根据实际函数定义调整,如果遇到问题可以查看相关文档或询问浮生梦老师。