电晕sdk插入行tableview
努力解决问题! 我需要在tableview中插入数据库查询的结果。 问题是我不能插入数据,因为当我这样做的结果是零...如果我尝试插入固定数据(如一般字符串“你好”)它的作品! 有人能帮我吗? 非常感谢。
function listatornei()
local dataURL = "http://www.lineitup.it/torneiopen.php?me="..usrUsr
numtornei=0
local function listaListener(event)
if event.phase=="ended" then
if (event.isError) then
print("Connection not available")
else
id_tor = {} -- array to store query field1
usr_tor = {} -- array to store query field2
local tab = event.response -- read json data
tab = json.decode( tab ) -- tabel conversion
if #tab > 0 then
for i=1, #tab do
id_tor[i] = tab[i]["idt"]
usr_tor[i] = tab[i]["gioc1_usr"]
numtornei=i
end
-- Listen for tableView events
local function tableViewListener( event )
local phase = event.phase
print( event.phase )
end
-- Handle row rendering
local function onRowRender( event )
local phase = event.phase
local row = event.row
local id = row.index
row.bg = display.newRect( 0, 0, display.contentWidth, 60 )
row.bg.anchorX = 0
row.bg.anchorY = 0
row.bg:setFillColor( 1, 1, 0 )
row:insert( row.bg )
row.idt = display.newText(id_tor[i], 0, 0, native.systemFontBold, 40 )
--row.idt = display.newText("pippo", 0, 0, native.systemFontBold, 40 )
row.idt.anchorX = 0
row.idt.anchorY = 0.5
row.idt:setFillColor( 0 )
row.idt.y = 20
row.idt.x = 42
row.usr = display.newText( usr_tor[i], 0, 0, native.systemFont, 40 )
--row.usr = display.newText( "pluto", 0, 0, native.systemFont, 40 )
row.usr.anchorX = 0
row.usr.anchorY = 0.5
row.usr:setFillColor( 0.5 )
row.usr.y = 20
row.usr.x = 250
row:insert( row.idt )
row:insert( row.usr )
end
-- Handle row's becoming visible on screen
local function onRowUpdate( event )
local row = event.row
print( "Row:", row.index, " is now visible" )
end
-- Handle touches on the row
local function onRowTouch( event )
local phase = event.phase
if "press" == phase then
print( "Touched row:", event.target.index )
end
end
-- Create a tableView
local tableView = widget.newTableView
{
top = 100,
width = 620,
height = 410,
--maskFile = "formlog1.png",
listener = tableViewListener,
onRowRender = onRowRender,
onRowTouch = onRowTouch,
}
for i = 1, numtornei do
local isCategory = false
local rowHeight = 60
local rowColor =
{
default = { 255, 255, 0 },
}
local lineColor = { 220, 220, 220 }
-- Make some rows categories
if i == 25 or i == 50 then
isCategory = true
rowHeight = 24
rowColor =
{
default = { 150, 160, 180, 200 },
}
end
-- Insert the row into the tableView
tableView:insertRow
{
isCategory = isCategory,
rowHeight = rowHeight,
rowColor = rowColor,
lineColor = lineColor,
}
end
end
end
end
end
network.request( dataURL, "GET", listaListener )
end
您需要检查从数据库返回的数据。 如果数据库中的数据为零,请不要插入它。 在您的onRowRender函数中,您应该测试每一个数据位,以确保在您尝试使用创建对象之前它不是零。
另外,你也有潜在的范围问题。 onRowRender()由屏幕上可见的表格行事件驱动。 它不是在for循环内同步调用的。 插入循环可能会在第一行的onRowRender()完成之前完成。 你还在onRowRender()中引用变量“i”,这些行将在行渲染时为零。 如果你的数据库行总是与你的tableView行有1:1的关系(即没有分类行),那么你可以使用行ID在你的数据表中查找你的数据。 如果没有,则应在插入行时使用传入数据的形式。 请参阅:https://coronalabs.com/blog/2014/03/04/tutorial-advanced-tableview-tactics/并查看Passable Parameters部分。
链接地址: http://www.djcxy.com/p/25899.html