Italian Chiacchiericci

LucaMs

Expert
Licensed User
Longtime User
Nel caso non mi fossi spiegato bene:

upload_2018-5-24_11-10-12.png


Il che è assurdo per qualunque utilizzatore, programmatore e non, perché ti viene istintivo toccare icona o titolo, non certo la parte vuota.
 

Sagenut

Expert
Licensed User
Longtime User
Eri stato chiarissimo e io sono d'accordo con te.
Scrivi a Huawei e proponi un contratto di collaborazione per migliorare il loro sistema. :D
Tu alle funzioni e @Star-Dust alla grafica e animazioni.
 

LucaMs

Expert
Licensed User
Longtime User
Ma come si fa! Come?!??!

Come diavolo si fa a nominare Ministro per l'Economia un 82ne!

A parte che l'aspettativa di vita, per gli uomini, è 79/80 anni quindi teoricamente dovrebbe essere già morto :D...

ma nel caso (impossibile) in cui la legislatura si completasse, dovrebbe arrivare a 87.

Come si fa a mandare in giro per l'Europa e per il Mondo un 82ne? Come si può pretendere che sia mentalmente lucido?

Ma su 60 milioni di italiani, non se ne trova uno con almeno un paio di decenni di meno?

Ma se ne vadano in pensione, maremma esodata!
 

Sagenut

Expert
Licensed User
Longtime User
Buongiorno.
In un mio progetto/test ho usato una ScrollView..... Però poi leggendo quà e là mi sono reso conto che ha dei limiti per quello che voglio fare e mi pare di aver capito che sia sempre meglio usare una CustomListView.
Sono scemo del tutto oppure ho capito bene?
Per effettuare il cambio c'è da modificare molto codice o sono abbastanza simili?
Premesso che non ho ancora guardato l'esempio in quanto ora sono in miniera a tentare di risollevare il PIL Nazionale.
 

udg

Expert
Licensed User
Longtime User
La CLV si basa internamente su ScrollView e HorizontalScrollView, quindi sono ovviamente molto simili.
Con CLV (ed oggi la sua versione xCLV per B4X) hai molta flessibilità e se cerchi un po' vedrai che ci sono anche versioni dedicate a determinati effetti (es. la collapsable, ovvero vedi solo dei titoli e cliccando su di essi si apre il pannellino con i dettagli).
 

Sagenut

Expert
Licensed User
Longtime User
La XCLV in più ha solo, per modo di dire, la comodità di essere portabile tra gli IDE B4X o ha anche altre opzioni?
Dovendo al momento utilizzare solo B4A quale sceglieresti?
 
D

Deleted member 103

Guest
Buongiorno.
In un mio progetto/test ho usato una ScrollView..... Però poi leggendo quà e là mi sono reso conto che ha dei limiti per quello che voglio fare e mi pare di aver capito che sia sempre meglio usare una CustomListView.
Sono scemo del tutto oppure ho capito bene?
Per effettuare il cambio c'è da modificare molto codice o sono abbastanza simili?
Premesso che non ho ancora guardato l'esempio in quanto ora sono in miniera a tentare di risollevare il PIL Nazionale.
La customlistview non è altro che una classe la cui base è la scrollview, quindi è la stessa cosa solo con alcune funzioni già implementate.
 

udg

Expert
Licensed User
Longtime User
Fino a poco tempo fa utilizzavo la CLV (ne avevo anche una modificata da me). Ora ho adotatto la xCLV perché tendo ad appoggiare il più possibile su soluzioni B4X e quindi ho anche altri componenti di tipo "x". Nel mio caso, in genere, un progetto utilizza sia B4A che B4J, quindi la comodità è evidente.
 

Sagenut

Expert
Licensed User
Longtime User
Vi chiedo anche una cosa nello specifico.
Con la ScrollView quando rimuovo un elemento rimane lo spazio bianco.
Con la CLV o XCLV questo si risolve?
 
D

Deleted member 103

Guest
Vi chiedo anche una cosa nello specifico.
Con la ScrollView quando rimuovo un elemento rimane lo spazio bianco.
Con la CLV o XCLV questo si risolve?
Sì! Questo perchè queste funzioni sono già implementate.
 

Sagenut

Expert
Licensed User
Longtime User
Ottimo.
Così almeno sò che quando mi ci metto vado nella giusta direzione.
 

LucaMs

Expert
Licensed User
Longtime User
Direi che possano essere rari i casi in cui si dovrebbe usare una semplice ScrollView anziché CLV o xCLV; giusto quelli in cui hai solo pochissimi elementi da inserirvi, magari molto grandi e, soprattutto, tutti diversi tra loro.

Per quanto riguarda lo scegliere tra CLV e xCLV, chiaramente si dovrebbe usare fin da subito xCLV, anche se si intenda sviluppare solo un app Android; il motivo è ovvio: impari fin da subito ciò che ti servirà in futuro. Però... "peeeero"
upload_2018-5-25_14-6-19.png



Proprio qualche giorno fa, tentando di dare una mano a qualcuno (*) ad un certo punto ho avuto un problema che non mi sarebbe capitato con la normale CLV.
Non sono stato a perderci ALTRO tempo e non l'ho risolto. Tra un po' magari lo riguardo e ti/vi faccio sapere.


(*) "♪♫♫♪ Perchééé lo fai, i ..zzi tuoi non te li fai mai ♪♫♫♪"
 

Sagenut

Expert
Licensed User
Longtime User
@LucaMs devi iniziare ad essere un pò egoista....... Non pensare agli altri..... Pensa a Penny
 

Sagenut

Expert
Licensed User
Longtime User
Io inizio il tentativo di integrazione della XCLV.
 

LucaMs

Expert
Licensed User
Longtime User
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):

B4X:
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 :D
 

LucaMs

Expert
Licensed User
Longtime User
Forse ho trovato la "magagna", guardando il codice d'esempio di Erel:

B4X:
Sub CheckBox1_CheckedChange(Checked As Boolean)
    Dim index As Int = clv2.GetItemFromView(Sender)
    Dim pnl As B4XView = clv2.GetPanel(index)
    Dim chk As B4XView = pnl.GetView(2)
    MsgboxAsync($"Item value: ${clv2.GetValue(index)}
Check value: ${chk.Checked}"$, "")
End Sub

Usa solo delle B4XView.

Però mi pare di ricordare di aver tentanto anche in questo modo. Riprovo!
 
Top