Hola gente del foro, soy nuevo con B4X, y quiero crear 300 views (Label y TextBox) en tiempo de ejecución.
El codigo mas o menos es asi:
B4X:
For i = 0 To 150 -1
'Inicia Agregar un Label
labelx.Initialize("labelx")
labelx.TextSize= 20
labelx.Text="Un label"
pnl_formulario1.AddView(labelx, 30dip, (i*30), 200dip, 25dip)
'Inicia Agregar un Textbox
textbox.Initialize("labelx")
textboxTextSize= 20
textbox.Text="Un Textbox"
pnl_formulario1.AddView(labelx, 30dip, (i*30), 200dip, 25dip)
Next
Mi pregunta es como puedo insertarle a cada view label una variable diferente?, si cada uno es el mismo, y lo mismo para textbox, necesito leer el valor que el usuario ingrese y guardarlo en una variable.
Si quieres poner el valor de una variable puedes emplear la propiedad Tag, por ejemplo asi:
B4X:
labelx.tag = i ' aprovechando tu bucle for next
No le des el mismo nombre de evento al label y al textbox (supongo que te refieres a EditText) para determinar quien pulsó.
Leer valor tag del label:
B4X:
Sub labelx_Click
Dim b As label
b=Sender
log("Valor del tag del label pulsado" & b.Tag)
End Sub
Pasar a variable entrada EdidText (he llamado al evento IN_Texto) :
B4X:
Sub IN_Texto_TextChanged (Old As String, New As String)
Dim b As EditText
Dim indice As int
b=Sender
indice = b.Tag
MiVariableGlobal(indice) = New ' pongo el valor introducido en el EditText
End Sub
End Sub
Puedes utilizar IN_Texto_EnterPressed para saber cuando pulsaron la tecla Enter, o IN_Texto_FocusChanged (HasFocus As Boolean) para saber cuando cogió o perdió el foco.