使用Corona SDK和Widget来显示表格数据的困难,使用display.newRetinaText

我正在按照 J.A. Whyte 在他的教程中的视频,这是我认为非常棒的 Corona SDK 商务应用程序教程。我像他在屏幕上输入代码一样输入了代码。我添加了一些故障排除代码,但我无法得到数据填充屏幕。我还为我的手机创建了一个构建,并在之前的 sdk 构建 2013.12.7 上运行它。这是代码。你可以注释掉关于 ping 的引用。


local widget = require("widget")

local top = display.statusBarHeight
local listRecs ={}
local list = nil

local nameData = {"Smith", "Johnson", "Williams", "Jones", "Brown", "Davis", "Miller", "Wilson", "Moore", "Taylor", "Anderson", "Thomas", "Jackson", "White", "Harris"}

local function setup()
    local bg = display.newRect(0,top, display.contentWidth, display.contentHeight - top)
    bg:setFillColor(0,155,73)
    list = widget.newTableView {top = top +10, height = 450 }
    maskFile = "mask.png"

end

local function loadData()
    for x =1 , #nameData do
        listRecs[x] = {}
        listRecs[x].name = nameData[x]
        listRecs[x].age = math.random(18,35)
        listRecs[x].showDel = false
        print(listRecs[x].name.." "..listRecs[x].age)
    end
end

local function showRecords()

    local function onRowRender(event)
        local row = event.row
        local rowGroup = event.view
        local idx = row.index or 0
        local color = 0

        print("the index value is: "..idx)

        row.textObj = display.newRetinaText(listRecs[idx].name, 0, 0, "Helvetica", 16)
        row.textObj:setTextColor( color )
        row.textObj:setReferencePoint(display.CenterLeftReferencePoint)
        row.textObj.x = 20
        row.textObj.y = rowGroup.contentHeight*0.35

        row.textObj2 = display.newRetinaText(listRecs[idx].age, 0, 0, "Helvetica", 16)
        row.textObj2:setTextColor( color )
        row.textObj2:setReferencePoint(display.CenterLeftReferencePoint)
        row.textObj2.x = 20
        row.textObj2.y = rowGroup.contentHeight*0.65

        rowGroup:insert(row.textObj)
        rowGroup:insert(row.textObj2)

    end -- onRowRender

    local function rowListener(event)

    end -- row Listener

    for x = 1, #listRecs do
            list:insertRow{
            onRender = onRowRender,
            listner = rowListener
        }
    end

end -- showRecords

setup()

loadData()

showRecords()
点赞
用户1607767
用户1607767

这些代码已经太旧了,不适用于当前的构建。请尝试使用当前版本的代码,希望能有所帮助:

local widget = require("widget")

local top = display.statusBarHeight
local listRecs ={}
local list = nil

local nameData = {"Smith", "Johnson", "Williams", "Jones", "Brown", "Davis", "Miller", "Wilson", "Moore", "Taylor", "Anderson", "Thomas", "Jackson", "White", "Harris"}

local function setup()
    local bg = display.newRect(0,top, display.contentWidth, display.contentHeight - top)
    bg:setFillColor(0,155,73)
    list = widget.newTableView {top = top +10, height = 450 ,onRowRender = onRowRender,     onRowTouch = onRowTouch,}
    maskFile = "mask.png"

end

local function loadData()
    for x =1 , #nameData do
        listRecs[x] = {}
        listRecs[x].name = nameData[x]
        listRecs[x].age = math.random(18,35)
        listRecs[x].showDel = false
        print(listRecs[x].name.." "..listRecs[x].age)
    end
end
function onRowRender(event)
    local row = event.row
    local groupContentHeight = row.contentHeight
    local idx = row.index or 0

    print("the index value is: "..idx)

    local textObj = display.newText( row, listRecs[idx].name, 0, 0, native.systemFontBold, 16 )
    textObj.x = 20
    textObj.anchorX = 0
    textObj.y = groupContentHeight * 0.35
    textObj:setFillColor( 0, 0, 0 )
    local textObj2 = display.newText( row, listRecs[idx].age, 0, 0, native.systemFontBold, 16 )
    textObj2.x = 20
    textObj2.anchorX = 0
    textObj2.y = groupContentHeight * 0.65
    textObj2:setFillColor( 0, 0, 0 )
end
-- onRowRender
local function showRecords()

local function rowListener(event)

end -- row Listener

for x = 1, #listRecs do

        list:insertRow{
    }
end

end -- showRecords

setup()

loadData()

showRecords()
2014-05-17 05:15:01