Non esageriamo, che sa un po' di presa perInteressante...grazie prof
Non mi permetterei maisa un po' di presa per... ?
Magari prima... pranzo, perché mi sembra "quasi" ora ?
Spesso faccio uso di xui.CreatePanel("") nelle mie app, ma mi tocca ogni volta inserire le variabili associate alle label o buttonsecondo me la cosa migliore è un custom type).
Private Sub PanelItem(ItemWidth As Int, ItemHeight As Int) As B4XView
Dim xPnlItem As B4XView = xui.CreatePanel("")
xPnlItem.SetLayoutAnimated(0, 0, 0, ItemWidth, ItemHeight)
xPnlItem.LoadLayout("Item")
Label1.Text = s
Return xPnlItem
End Sub
Chi non capisce più una mazza sono io, perché sto facendo 12 cose contemporanemente, nessuna ben fatta, quindi ?oppure non ho capito na maz..
MiaClv.Add(PanelItem(....), MaQuiUnValoreAssociato)
Type tArticolo(Nome As String, Marca As String, Prezzo As Double)
Dim NuovoArticolo As tArticolo
'(NOTA l'IDE può scriverti direttamente la Sub per la creazione di un nuovo tArticolo *)
NuovoArticolo.Initialize
NuovoArticolo.Nome = "Scarpone"
NuovoArticolo.Marca = "Mike"
NuovoArticolo.Prezzo = 125
'Il 2° NuovoArticolo sarà il valore associato a quell'item,
'che ti verrà passato alla Sub-Evento Click.
MiaClv.Add(CreaItem(NuovoArticolo, 200dip, 100dip), NuovoArticolo)
Private Sub CreaItem(Articolo As tArticolo, ItemWidth As Int, ItemHeight As Int) As B4XView
Dim xPnlItem As B4XView = xui.CreatePanel("")
xPnlItem.SetLayoutAnimated(0, 0, 0, ItemWidth, ItemHeight)
xPnlItem.LoadLayout("layItem") ' <--- layItem mi piace di più ^__^
lblNome.Text = Articolo.Nome
lblMarca.Text = Articolo.Marca
lblPrezzo.Text = NumberFormat2(Articolo.Prezzo, ... ... ....)
Return xPnlItem
End Sub
Eh, proprio a quello mi riferivo; invece è molto utile, ad esempio per non dover fare salti mortali per prendere il valore da una view che faccia parte dell'item.non uso quasi mai il valore dell'oggetto
Type tArticolo(Nome As String, Marca As String, Prezzo As Double)
XCLV1.Clear
dbSQL.InitializeSQLite(File.DirApp,"giocatori.db",True)
Dim Giocatore As tGiocatori
Giocatore.Initialize
dbCursor = dbSQL.ExecQuery("SELECT rowid,* FROM TbGiocatori")
Dim ItemWidth As Int = XCLV1.AsView.Width
Dim ItemHeight As Int = 140dip
Do While dbCursor.NextRow
Giocatore.Id = dbCursor.GetString("id")
Giocatore.Nome = dbCursor.GetString("nome")
Giocatore.Cognome = dbCursor.GetString("cognome")
Giocatore.Eta = dbCursor.GetString("eta")
Giocatore.Altezza = dbCursor.GetString("altezza")
Giocatore.Sport = dbCursor.GetString("sport")
XCLV1.Add(CreaItem(Giocatore, ItemWidth, ItemHeight),Giocatore)
Loop
dbCursor.Close
'PanelItem
Private Sub CreaItem(Giocatore As tGiocatori, ItemWidth As Int, ItemHeight As Int) As B4XView
Dim xPnlItem As B4XView = xui.CreatePanel("")
xPnlItem.SetLayoutAnimated(0, 0, 0, ItemWidth, ItemHeight)
xPnlItem.LoadLayout("layItem")
LBId.Text = Giocatore.Id
LBNome.Text = Giocatore.Nome
LBCognome.Text = Giocatore.Cognome
LBEta.Text = Giocatore.Eta
LBAltezza.Text = Giocatore.Altezza
LBSport.Text = Giocatore.Sport
Return xPnlItem
End Sub
Sì, è ciò che intendevo.Non ho resistito nel provare custom type
@LucaMs potresti gent. controllare se ho capito bene
cosa intentevi con la custom type?
funziona ma non sono sicuro se corretto
grazie
Private Sub XCLV1_ItemClick (Index As Int, Value As Object)
Log(Value.As(tGiocatori).Cognome)
End Sub
Private Sub XCLV1_ItemClick (Index As Int, Value As Object)
Dim Giocatore As tGiocatori = Value
Log(Giocatore.Cognome)
End Sub
Beh, i suggerimenti te li scrivo subito. L'errore più tardi, se vedrò che non avrai risposto.(e ti darò un paio di suggerimenti utili)
Type tGiocatori(Id As String, _
Nome As String, Cognome As String, _
Eta As String, Altezza As String, _
Sport As String)
Public Sub CreatetGiocatori (Id As String, Nome As String, Cognome As String, Eta As String, Altezza As String, Sport As String) As tGiocatori
Dim t1 As tGiocatori
t1.Initialize
t1.Id = Id
t1.Nome = Nome
t1.Cognome = Cognome
t1.Eta = Eta
t1.Altezza = Altezza
t1.Sport = Sport
Return t1
End Sub
Sto provando, noto solo che cliccando ho l'ultimo della lista clvQuando lo avrai fatto e provato, se non lo avrai trovato ti dirò dove sia l'errore
questa è un'altra cosa interessanteB4X:Public Sub CreatetGiocatori (Id As String, Nome As String, Cognome As String, Eta As String, Altezza As String, Sport As String) As tGiocatori Dim t1 As tGiocatori t1.Initialize t1.Id = Id t1.Nome = Nome t1.Cognome = Cognome t1.Eta = Eta t1.Altezza = Altezza t1.Sport = Sport Return t1 End Sub
Sì, se non ci fosse un'errore. Nella creazione-caricamento della CLV.Sto provando, noto solo che cliccando ho l'ultimo della lista clv
dovrei avere il cognome in base a che item della lista clicco?
Dim Giocatore As tGiocatori
Giocatore.Initialize
dbCursor = dbSQL.ExecQuery("SELECT rowid,* FROM TbGiocatori")
Dim ItemWidth As Int = XCLV1.AsView.Width
Dim ItemHeight As Int = 140dip
Do While dbCursor.NextRow
Giocatore.Id = dbCursor.GetString("id")
Giocatore.Nome = dbCursor.GetString("nome")
Giocatore.Cognome = dbCursor.GetString("cognome")
Giocatore.Eta = dbCursor.GetString("eta")
Giocatore.Altezza = dbCursor.GetString("altezza")
Giocatore.Sport = dbCursor.GetString("sport")
XCLV1.Add(CreaItem(Giocatore, ItemWidth, ItemHeight),Giocatore)
Loop
dbCursor.Close
resistoHai sofferto abbastanza ?
? ok ora funzionaquindi dichiarazione e inizializzazione devono stare all'interno del ciclo