データベースにテーブルがあります。そのテーブルには不明な行数があります。チェックボックスを配置したいのですが、チェックボックスの数は行数と同じにする必要があります。したがって、whileループで実行しようとしました。テーブルに存在する行数を見つけました。これはrowNumberです。次に、whileループを実行しました。この時点で、シリアル障害があります。チェックボックスをクリックすると、下の行が最後の m 値で呼び出されるためです。
cbox[m] = checkBox.new(checkX, txtY, sendRows[m], col,
while loop を終了した後、m は rowNumber に等しいためです。また、チェックボックスがクリックされた場合、m = rowNumber であるため、どの行がクリックされたかはわかりません。いろいろやってみたけど無理。私は何をすべきか ??ループの使用をあきらめるべきですか?もし私がそれを使うのをやめたらどうすればいいですか?
ここに私が修正できないコードがあります
local m = 1
while(m<rowNumber)
cbox[m] = checkBox.new(checkX, txtY, sendRows[m], col,
function(this)
local state = this:getCheck()
if state then
print(m .. " checked")
gonder[m] = 1
else
print(m .. " does not checked")
gonder[m] = 0
end
end
)
screen:addChild(cbox[m])
cbox[m]:setCheck(settings.getMusicState())
txtY = txtY + gap
print ("gonder[m] = " .. gonder[m])
end
以下のように記述した場合、正しく動作します。
cbox[1] = checkBox.new(checkX, txtY, sendRows[1], col,
function(this)
local state = this:getCheck()
if state then
print(1.. " checked")
gonder[1] = 1
else
print(1 .. " does not checked")
gonder[1] = 0
end
end
)
screen:addChild(cbox[1])
cbox[1]:setCheck(settings.getMusicState())
txtY = txtY + gap
cbox[2] = checkBox.new(checkX, txtY, sendRows[2], col,
function(this)
local state = this:getCheck()
if state then
print(2.. " checked")
gonder[2] = 1
else
print(2 .. " does not checked")
gonder[2] = 0
end
end
)
screen:addChild(cbox[2])
cbox[2]:setCheck(settings.getMusicState())
txtY = txtY + gap
.
.
.
.