Italian Listview in scrollview ... un amore impossibile

LordZenzo

Well-Known Member
Licensed User
Longtime User
ma scusa, listview e scrollview,
fanno una stessa cosa, far scorrere dei dati
perché penso sia questo che vuoi fare
se vuoi usare una scrollview dentro devi metterci un altro tipo di contenitore dei dati
spiegaci meglio cosa vorresti fare, e vediamo se ci viene un idea....:):)
 

LucaMs

Expert
Licensed User
Longtime User
Come hai letto in quei post è un problema (probabilmente irrisolvibile).

Se la cosa non è troppo brutta, potresti usare una specie di scrollbar verticale per muovere un pannello che contenga la listview.
Te lo disegno per spiegarmi, ma va creato da zero, penso (o chissà, magari già esiste, benché senza listview):

upload_2016-8-30_0-45-54.png
 
D

Deleted member 103

Guest
Scusate se mi intrometto. :)
In una mia App uso una scroollview dentro una scroollview e funziona bene.
La seconda scroollview devi metterla dentro un Panel.
Per fare lo scroollview nella seconda devi tenere ferma con un dito la prima è con un'altro fai lo scrooll nella seconda.
 

Roberto Tsolakis

Member
Licensed User
Longtime User
OK ... ma che me ne faccio di due scrollview ?
E poi ha ragione Luca ... DOVETE INTROMETTERVI! Risponde quasi sempre e solo lui!
Se tutti gli dessere un euro a risposta (non esageriamo) farebbe facilmente le vacanze alle maldive .... facendo sempre assistenza B4A via satellitare
 

Roberto Tsolakis

Member
Licensed User
Longtime User
Cmq .... Luca ... anche il tuo esempio non funziona ...

Ho allegato un esempio di quello che servirebbe a me. Come potrai notare la parte blu (una listview) non scorre all'interno della parte nera (scrollview)
 

Attachments

  • ScrollView and Listview.zip
    37.9 KB · Views: 196

Cableguy

Expert
Licensed User
Longtime User
I can't write Italian, So sorry for that.

First, you need to think of both ScrollView and ListView as containers and not as Views...
Your ScrollView is your main container, so it will be the Parent of any other view you add to it. But you cannot add a ListView directly to it, you need to first add a panel to the ScrollView InnerPanel, which will be the ListView Parent, being the ScrollView's Child... confusing I know... But its the best explanation I can think of on how to add them together...
As a side note, as @Filippo said, a ListView is a kind of ScrollView... with some particular functions... But if your Listview is not too complex, you can easilly "simulate" one using a second scrollview inside the main one
 

LucaMs

Expert
Licensed User
Longtime User
Cmq .... Luca ... anche il tuo esempio non funziona ...
In che senso non funziona? Così com'è il progetto (testato solo su un dispositivo, però) funziona. Forse intendi dire che non funziona se lo applichi al tuo progetto?


Provo a vedere il progetto che hai allegato, anche se mi sarebbe stato più utile un semplice disegno dell'activity.

Intanto, ricordati di dare un nome significativo alle View (e in generale a tutte le variabili), così il codice si capisce meglio.

Ti conviene usare un array contenente le bitmap (anatra, cigno...) e nell'evento click della listview: ImageView1.Bitmap = arrVolatili(Position). Parlo di questa Activity, ma, devo ancora guardare bene il codice, probabilmente si dovrebbe fare una cosa più generale per tutti i tipi di animale, magari usare anche un DB. Ad esempio, potresti avere una Map in cui ogni elemento sia una lista di bitmaps a seconda della specie (benché mischiare volatili con canidi, felini... ma tanto, non mi ricordo un tubo di zoologia :p):

mapAnimali.Get("Canidi")

potrebbe restituirti una List contenente tutte le bitmap caricate in precedenza:
dim lstCanidi As List
' inizializzazione e caricamento

mapAnimali.Put("Canidi", lstCanidi)


Va beh, vediamo se capisco la grafica.

Per il momento ho trovato sicuramente UN motivo per cui non riesci a far scorrere la listview (almeno, sul tablet sembra così): perché la listview è sufficientemente grande da visualizzare tutti gli item; infatti, se provi ad aggiungere una ventina di item (con testo "ciao", giusto per prova) vedrai che scorre.

Testata anche su uno smartphone: scorre ma solo toccando la riga divisoria tra gli item e facilmente sul tablet mentre con difficoltà sullo smartphone (mah, dipenderà dalla sensibilità?).

Non scorre affatto la parte nera (scrollview) che, suppongo per il momento, non contiene altre View; a questo proposito, non so se lo sai, ma puoi caricare un Layout anche in un Panel, non solo in un'Activity.

A proposito delle altre View: quali saranno? Dettagli riguardo l'animale selezionato? Sicuro che una ScrollView sia la scelta migliore (anche il tabhost potrebbe essere tranquillamente sostituito da uno Spinner, volendo).
Ops... soprattutto la Listview potrebbe essere sostituita da uno Spinner, dato che ci metti solo un testo!

Mah, non capisco; carichi:
Activity.LoadLayout("AM_TAB_Main")
Quel layout contiene solo una label e un tabhost, poi in Visualizza_Pannello rimuovi 4 view che... non sono state caricate eppure non ti dà errore!

Quel Panel1 dove dovrebbe stare? Di certo non è stato aggiunto alla ScrollView.

Fai una cosa: un bel disegnino tipo quello che ho pubblicato in #3, con l'aspetto che l'app dovrebbe avere, così posso capire meglio.
 

LucaMs

Expert
Licensed User
Longtime User
(benché mischiare volatili con canidi, felini... ma tanto, non mi ricordo un tubo di zoologia :p):
EdR_Classificazione_e_sistematica.JPG

Ecco perché a naso non mi veniva di paragonare "volatili" a canidi... "volatili" (uccelli) sono una Classe, "canidi" etc. sono Famiglie.


Non è che sto a sottilizzare, ma pensavo: se poi dovesse aggiungere altre Tab? Come detto, ho abbandonato i TabHost dopo la prima settimana di utilizzo di b4a e adesso, provando, vedo che i Tab non scorrono, quindi se ne aggiungi altri, i loro titoli diventano sempre più corti (già "volatili" sul mio smartphone viene tagliata). Sarebbe il caso di usare uno Spinner per selezionare una Famiglia oppure, volendo mantenere quell'aspetto, TabStripViewPager.

Ripeto che sarebbe utile un disegno di come vorresti che apparisse l'Activity (completa).
 
D

Deleted member 103

Guest
E poi ha ragione Luca ... DOVETE INTROMETTERVI! Risponde quasi sempre e solo lui!
Ah si, allora mi intrometto di nuovo!;)

Da come stò a capire io, non ho capito mica tanto cosa vuoi fare. :(
Cerca di spiegarti meglio, con parole, schizzi ...
In B4a si possono fare tante cose e in tanti modi diversi.
 

Roberto Tsolakis

Member
Licensed User
Longtime User
Va beh ci provo ...
In realtà il progetto che sto facendo non è assolutamente un database di zoologia ... ma un programma per la gestione di preventivi :)
Ovviamente le variabili hanno un nome ben diverso. tipo listview1_vano, listview1_manligneo, ecc. (le uso con parte del nome originale perchè mi viene più facile da design)

Il programma di Luca non funzionava ... forse perchè, appunto, non ho premuto nell'interspazio, provandolo su un cell.
Non ti preoccupare delle tabhost ... tanto non funziona nemmeno dentro ad un'activity al 100% delle dimensioni!


Cmq non riesco nemmeno a capire come fare una listview container ed una oggetto ... come dice Cableguy. Mi serve proprio un esempio .... MA DI FACILE COMPRENSIONE!
Perchè io sono un bel pò tardo


Nello screenshot la listview in blu (anch'io ho usato colori sgargianti) dovrebbe scorrere ...
purtroppo scorre solo il panel ... o lo scrollview, ma la listview nonostante ci siano abbastanza voci rimane bloccata.
Ma che scemo che sono .... allungo la listview fino a fine pagina e tutto è risolto!
Non sono cosi ingenuo ... sotto ci saranno altre view.
 

Attachments

  • demo.png
    demo.png
    12.2 KB · Views: 192
Last edited:

LucaMs

Expert
Licensed User
Longtime User
Il programma di Luca non funzionava ... forse perchè, appunto, non ho premuto nell'interspazio, provandolo su un cell.
No, quando parlavo dello spazio tra gli item parlavo del tuo progetto. Non capisco come mai il mio a te non funzioni; cosa fa? Non scorre la ListView? Il pannello (usando la "barra" a destra) scorre? Ma, proprio il mio progettino non funziona o lo hai modificato per le tue necessità?


Cmq non riesco nemmeno a capire come fare una listview container ed una oggetto
Cableguy intendeva dire che puoi vedere una ListView COME un contenitore, non che possa funzionare da contenitore. E' un po' COME SE fosse una scrollview con tante label e imageview che fanno da item.


Mi serve proprio un esempio .... MA DI FACILE COMPRENSIONE!
Se tu DISEGNI l'aspetto che vorresti che l'app avesse, si potrebbe aiutarti meglio.
Si può realizzare l'interfaccia grafica in tanti modi diversi; ad esempio, io non userei una ListView ma uno Spinner (che non occupa spazio) ma dipende da te... come la vuoi? Questo è il punto: progettare almeno l'interfaccia grafica.


P.S. ops, non avevo visto l'allegato... ora lo guardo :)

p.s del p.s :) per forza non l'avevo visto, l'hai aggiunto dopo :p
 

LucaMs

Expert
Licensed User
Longtime User
Allora... dato che non mi piacciono i TabHost, dato che se ti servono più di 3 o 4 Tab non scorrono e non si adattano bene a tutti i dispositivi, dato che devi prima prima risolvere la faccenda "scroll"... perché non creare una semplice app di prova, senza TabHost, solo per lo scrolling di ListView? Come detto, se la ListView si trova dentro una ScrollView, la cosa si complica.
Normalmente, in progetti che usano molto tabelle di database, non si usano ListView, ma ComboBox (nome VB.Net) per filtrare i dati e visualizzare qualcosa nel dettaglio.
 

Roberto Tsolakis

Member
Licensed User
Longtime User
Ti stai focalizzando sulle TAB ... E' sicuro che userò qualcosa di diverso ... magari un menù che riappare ad ogni accettazione dati ... a me attualmente serve solo una listview in una scrollview che entrambe scrollino separatamente.
Per il resto è un'altra storia.
Ora provo la modifica che hai fatto
 
Top