Italian [Risolto] Bottoni scrollabili in B4A ok ma non riesco in B4J

Gnappo jr

Active Member
Licensed User
Longtime User
In B4A ho realizzato una scrollview nella quale aggiungo 20 bottoni programmaticamente ed eseguo lo scroll!
Allego un programma di test nel quale lancianto il B4A e possibile vedere i bottoni creati e scollabili.
Mi potete aiutare a fare la stessa cosa in B4J?
 

Attachments

  • MatrixButton2.zip
    9.8 KB · Views: 125
Last edited:

Gnappo jr

Active Member
Licensed User
Longtime User
In B4A ho realizzato una scrollview nella quale aggiungo 20 bottoni programmaticamente e eseguo lo scroll!
Allego un programma di test nel quale lancianto il B4A e possibile vedere i bottoni creati e scollabili.
Mi potete aiutare a fare la stessa cosa in B4J?

Perché, più semplicemente, non usi xCustomListView?
Grazie LucaMs per l'esempio che gentilmente haì allegato, è molto utile a me e sicuramente lo sarà per altri.
Il motivo per cui non ho usato xCustomListView è quello di evitare l'uso di un ulteriore layout aggiuntivo come "layCLVItem" che implica un attività con il designer che vorrei evitare volendo otterere l'oggetto per via programmatica.
L'uso della xCustomListView lo trovo più farraginoso rispetto alla semplice scrollview con panel interno, ma a quanto si evince è l'unica soluzione.
Se qualcuno vuole intervenite per approfondire ben ven venga.
 
Last edited:

LucaMs

Expert
Licensed User
Longtime User
Il motivo per cui non ho usato xCustomListView è quello di evitare l'uso di un ulteriore layout aggiuntivo come "layCLVItem" che implica un attività con il designer che vorrei evitare voledo otterere l'oggetto per via programmatica.
Tutto molto più semplice, pulito e ordinato usando il Designer (i layout).


L'uso della xCustomListView lo trovo più farraginoso rispetto alla semplice scrollview con panel interno
Per niente, perché devi calcolare dimensioni, posizionamenti, etc., mentre tutto questo è "delegato" alla xCustomListView.
 

Star-Dust

Expert
Licensed User
Longtime User
L'uso della xCustomListView lo trovo più farraginoso rispetto alla semplice scrollview con panel interno, ma a quanto si evince è l'unica soluzione.
Non è l'unica soluzione. Puoi fare lo stesso con ScrollPane o tutti le viste di scorrimento simili.
 

Star-Dust

Expert
Licensed User
Longtime User
Non metterteci anche tu, con invenzioni strampalate 😄, quando la strada più semplice, pulita e multipiattaforma è la xCustomListView.
Mai usato xCustomListView. Non vedo perché non dovrei usare ScrollView o xScrollView. Ma è una mia convinzione. Poi ognuno ....
 

Star-Dust

Expert
Licensed User
Longtime User
Ovviamente nessuno te lo vieta; ma perché mettersi a calcolare posizioni varie (nonché dimensione del panel interno) quando tutto è molto più semplice con xCLV?!?!
Mica devo farli io i calcoli. Li fa il coprocessore matematico. L'ho pagato fiori di centinaia di dollari per questo lavoro. :p

Nonostante la gradevole conversazione. io vado che ho da fare ;-)
 

Gnappo jr

Active Member
Licensed User
Longtime User
Ovviamente nessuno te lo vieta; ma perché mettersi a calcolare posizioni varie (nonché dimensione del panel interno) quando tutto è molto più semplice con xCLV?!?!
..... perchè si impara molto nel valutare le molteplici soluzioni e i diversi approcci non fermandosi alla soluzione pià evidente.
 

Star-Dust

Expert
Licensed User
Longtime User
Allora non vedo perché usare ScrollView anziché creare la tua versione personalizzata 🥳
Non uso nemmeno la mia francamente. Molte delle cose che creo li uso una volta sola.
 

Sagenut

Expert
Licensed User
Longtime User
Puoi creare i Button nella XCLV da codice esattamente come fai con la ScrollView
B4X:
'-------------------
'Usando la XCLV
'------------------
For y = 0 To 20
    Dim p As B4XView = xui.CreatePanel("")
    p.SetLayoutAnimated(0, 0, 0, CustomListView1.AsView.Width, CustomListView1.AsView.Width * 0.75)
    Dim b As Button
    B.Initialize("BtsEvent")
    B.Color =Colors.Yellow
    B.Typeface = Typeface.DEFAULT_BOLD
    B.TextSize = 12
    B.Text = y+1
    B.Tag = y+1
    p.AddView(B, 5, 0, p.Width - 10, p.Height)
    CustomListView1.Add(p, y)
Next
Aggiungi una XCLV al tuo progetto, con le stesse dimensioni della tua ScrollView attuale, e prova.
Però anche io trovo più comodo creare un Layout dell'Item con il Designer e poi aggiungerlo N volte.
Ad ogni aggiunta lo puoi personalizzare come creandolo da codice, ma risparmiando lavoro.
Ma forse mi sfugge il tuo obiettivo finale.
 

Gnappo jr

Active Member
Licensed User
Longtime User
Puoi creare i Button nella XCLV da codice esattamente come fai con la ScrollView
B4X:
'-------------------
'Usando la XCLV
'------------------
For y = 0 To 20
    Dim p As B4XView = xui.CreatePanel("")
    p.SetLayoutAnimated(0, 0, 0, CustomListView1.AsView.Width, CustomListView1.AsView.Width * 0.75)
    Dim b As Button
    B.Initialize("BtsEvent")
    B.Color =Colors.Yellow
    B.Typeface = Typeface.DEFAULT_BOLD
    B.TextSize = 12
    B.Text = y+1
    B.Tag = y+1
    p.AddView(B, 5, 0, p.Width - 10, p.Height)
    CustomListView1.Add(p, y)
Next
Aggiungi una XCLV al tuo progetto, con le stesse dimensioni della tua ScrollView attuale, e prova.
Però anche io trovo più comodo creare un Layout dell'Item con il Designer e poi aggiungerlo N volte.
Ad ogni aggiunta lo puoi personalizzare come creandolo da codice, ma risparmiando lavoro.
Ma forse mi sfugge il tuo obiettivo finale.
Grazie! Il mio obiettivo finale è il porting in B4J di App sviluppate in B4A
 

Sagenut

Expert
Licensed User
Longtime User
Grazie! Il mio obiettivo finale è il porting in B4J di App sviluppate in B4A
Allora affidati alla XCLV e alle B4XViews in genere e avrai molti meno problemi.
Sono state create di proposito per favorire il porting tra i vari sistemi.
 

Star-Dust

Expert
Licensed User
Longtime User
Allora non vedo perché usare ScrollView anziché creare la tua versione personalizzata 🥳
Comunque per lo ScrllView uso una mia classe b4x (non xui) che non ho mai pubblicato.
È per listview lo stesso, ho una mia classe b4x (non-xui) mai pubblicata.

Anche perché anziché pensare che sia meglio avere una pluralità di soluzioni, ti chiedono come mai non usi xclv o una delle sue derivate (lazy e sprazzy)

Già che ho pubblicato listview e xGridListView è tanto.
 
Last edited:

LucaMs

Expert
Licensed User
Longtime User
xCLV è come se fosse un livello superiore di ScrollView (perlomeno in B4A), che ti aiuta a gestire meglio, più semplicemente e velocemente una ScrollView.
Inoltre è multipiattaforma.

Volendo potrei anche usare un Panel (B4A, ma Pane B4J) anche al posto sia della ScrollView che, a maggior ragione, della "superiore" xCLV; ma... mi conviene? Assolutamente no.

Evitare di creare dei layout col Designer? Stessa cosa, non mi conviene.

Se poi si preferisce fare tutto da soli, magari per avere maggiore controllo ok, però si sprecherà tempo ("reinventare la ruota") e sarà difficile condividere i propri sw.

Già che ci siete, sviluppate un vostro personalissimo ambiente di sviluppo (ovviamente per Android, iOS, Windows, Linux, ...) :)
 
Top