Tra un po' magari lo riguardo e ti/vi faccio sapere.
Non so se vi possa interessare, spero di sì.
Un tale aveva chiesto come poter realizzare una CLV con la possibilità di allineare gli elementi (dx centro sx); allegai un esempio:
https://www.b4x.com/android/forum/threads/xui-xcustomlistview-set-alignment.93361/#post-590677
Un altro membro di b4x chiedeva, in un diverso thread, come poter impostare il focus su una EditText presente nella sua CLV quando venisse premuto Enter "su" una EditText di un elemento (item) precedente. Insomma, sto inserendo testo in una EditText in una CLV, premo Invio e passo ad inserire testo nell'Item successivo.
Ho quindi preso l'esempio precedente, con l'intenzione di modificarlo leggermente, allo scopo di dimostrare come poter impostare il focus come chiedeva il tizio.
(non ne sono certo ma, nell'esempio allegato, avevo messo un tasto ed una Label per ogni Item, quindi ho sostituito la Label con una EditText).
Il bello arriva qui, nella routine che gestisce l'evento EnterPressed (in cui la mia intenzione era quella di rilevare l'indice dell'item, "prelevare" la EditText dell'Item successivo e passare il focus a questa):
Sub EditText1_EnterPressed
Dim CurrIndex As Int = xCLV.GetItemFromView(Sender)
If CurrIndex < xCLV.Size - 1 Then
' Dim b4 As B4XView = xCLV.GetPanel(CurrIndex + 1)
Dim pnl As Panel = xCLV.GetPanel(CurrIndex + 1)
Log(pnl.NumberOfViews)
Dim aaa As Object = pnl.GetView(0)
Log(GetType(aaa))
End If
End Sub
In questo caso, l'ho modificata per effettuare il debugging (tra l'altro, ho ancora problemi di connessione USB PC-dispositivo Android, che pensavo risolti).
Se vi va di smanettarci... il pnl ottenuto usando xCLV.GetPanel dovrebbe contenere 3 view: un Panel, un Button ed una EditText, invece restituisce 1 come NumberOfViews (quindi tantomeno è stato possibile ricavare la EditText).
Altra cosa che devo andare a cercare è questa.
Con la "normale" CLV, quando crei un item, normalmente crei una routine che restituisca un panel, che aggiungi alla CLV:
clvMia.Add(CreaPannello(...), Valore)
nella CreaPannello crei un Panel, LO AGGIUNGI ALLA ACTIVITY, lo riempi con quello che ti pare, LO TOGLI DALLA ACTIVITY e lo fai restituire dalla routine stessa (CreaPannello):
Sub CreaPannello(...) As Panel
Dim pnl As Panel
pnl.Initialize("")
Activity.AddView(pnl...)
...
pnl.RemoveView
Return pnl
End Sub
Bene, non so se sia una faccenda XUI (ma non mi pare proprio) ma negli esempi di xCLV di Erel non è più necessario aggiungere all'Activity il pannello creato per poi toglierlo. Sicuramente non riguarda XUI; devo andare a cercare, perché mi pare che Lassie qualcosa al riguardo.
The End