Italian Modifica dati inseriti su CustomListView

nonno

Active Member
Licensed User
Longtime User
Ciao a tutti, dovrei modificare dati all'interno di un pannello di una customlistview , uso questo metodo, elimino prima la riga e poi inserisco di nuovo i dati, esiste un altro modo?

B4X:
Private Sub CustomListView1_ItemClick (Index As Int, Value As Object)
    
    Dim pnl As B4XView = xui.CreatePanel("")
     pnl.SetLayoutAnimated(0, 0, 0, 100%x, 300dip)
    pnl.LoadLayout("layitem")
    pnl.Tag = CustomListView1
    
     lblOrdine.Text = "lupo"
     lblv2.Text = "tartaruga"

     CustomListView1.RemoveAt(Index)
     CustomListView1.InsertAt(Index,pnl,100dip,100dip)
    
End Sub
 

LucaMs

Expert
Licensed User
Longtime User
B4X:
Private Sub CustomListView1_ItemClick (Index As Int, Value As Object)
    Dim pnl As B4XView = CustomListView1.GetPanel(Index)
    lblOrdine = pnl.GetView(0) ' ammesso che lblOrdine sia la prima view.
    lblOrdine.Text = "lupo"
    lblv2.Text = pnl.GetView(1) ' ammesso che lblv2 sia la seconda view.
    lblv2.Text = "tartaruga"
End Sub
 

nonno

Active Member
Licensed User
Longtime User
B4X:
non modifica i dati sulla riga che premo

Sottotemi privati btn_Click
    
    Dim row As Int =CustomListView1.GetItemFromView(Sender)
    '  aggiuge riga dopo il pulsante premuto
    CustomListView1.Add(rowpnl,60dip,Riga)

    '' aggiunge una riga prima di quella premuta
CustomListView1.InsertAt(riga, riga, 60dip,100dip)
  
End Sub
 

LucaMs

Expert
Licensed User
Longtime User
B4X:
non modifica i dati sulla riga che premo

Sottotemi privati btn_Click
   
    Dim row As Int =CustomListView1.GetItemFromView(Sender)
    '  aggiuge riga dopo il pulsante premuto
    CustomListView1.Add(rowpnl,60dip,Riga)

    '' aggiunge una riga prima di quella premuta
CustomListView1.InsertAt(riga, riga, 60dip,100dip)
 
End Sub
Ma devi modificare i dati (visualizzati) di un item clickato o vuoi aggiungerne uno nuovo?
 

nonno

Active Member
Licensed User
Longtime User
Ma devi modificare i dati (visualizzati) di un item clickato o vuoi aggiungerne uno nuovo?
Come al solito Grazie per la tua presenza..... dipende li devo inserire o modificare ,dopo la modifica CustomListView1.RemoveAt(row) funziona, forse non è il modo coretto.
 

LucaMs

Expert
Licensed User
Longtime User
Come al solito Grazie per la tua presenza..... dipende li devo inserire o modificare ,dopo la modifica CustomListView1.RemoveAt(row) funziona, forse non è il modo coretto.
1) Per modificare i valore delle view contenute in un item della clv, devi fare come nel post #2: ottenere il pannello e da questo le view.
Per aggiungere un nuovo item, metti un tasto al di fuori della clv (nella Root, se stai usando B4XPages, altrimenti nell'Activity).
RemoveAt dovresti usarlo solo nel caso in cui volessi eliminare del tutto un item e basta.


P.S. Spesso non è nemmeno necessario fare come nel punto 1). Se ad esempio gli item contengono una lblDato di cui vuoi modificare il testo, in un determinato item, potrai sempre usare l'evento Click di lblDato:

B4X:
Private Sub lblDato_Click
    Dim lbl As Label = Sender
    lbl.Text = "Nuovo testo"
End Sub
 
Last edited:

nonno

Active Member
Licensed User
Longtime User
Per aggiungere un nuovo item, metti un tasto al di fuori della clv (nella Root, se stai usando B4XPages, altrimenti nell'Activity).
RemoveAt dovresti usarlo solo nel caso in cui volessi eliminare del tutto un item e basta.


P.S. Spesso non è nemmeno necessario fare come nel punto 1). Se ad esempio gli item contengono una lblDato di cui vuoi modificare il testo, in un determinato item, potrai sempre usare l'evento Click di lblDato:
Grazie mille Luca
 

nonno

Active Member
Licensed User
Longtime User
1) Per modificare i valore delle view contenute in un item della clv, devi fare come nel post #2: ottenere il pannello e da questo le view.
Per aggiungere un nuovo item, metti un tasto al di fuori della clv (nella Root, se stai usando B4XPages, altrimenti nell'Activity).
RemoveAt dovresti usarlo solo nel caso in cui volessi eliminare del tutto un item e basta.
riesco a modificare i dati contenuti nelle label direttamente dalla clv, il comando sender funziona per modificare il testo del pulsante stesso ma non per leggere i dati contenuti nelle label
 

Attachments

  • B4AProject Prova 3.zip
    36.2 KB · Views: 218

LucaMs

Expert
Licensed User
Longtime User
riesco a modificare i dati contenuti nelle label direttamente dalla clv, il comando sender funziona per modificare il testo del pulsante stesso ma non per leggere i dati contenuti nelle label
1623623755572.png


Vedi? GetPanel vuole un Int (Index), tu gli passi un Button (bt); guarda sempre bene l'help contestuale.
 

Attachments

  • B4AProjectProva4.zip
    36.3 KB · Views: 220
Top