Italian Domanda difficile?

fifiddu70

Well-Known Member
Licensed User
Longtime User
Ho bisogno di prelevare e di elencare secondo una determinata categoria alcuni prodotti da una listview piena di testi inseriti, ogni prodotto è contrassegnato da 3 lettere ad esempio: MN1 per una categoria, MN2 per unaltra categoria etc, ho bisogno di prelevare da questa listview questi elementi inseriti in maniera casuale e selezionarli tutti per categria uno sotto l'altro, quindi tutti quelli con MN1 poi a seguire tutti quelli con MN2 etc. poi li devo rimettere sempre in un'altra listview, qualcuno ha già fatto qualcosa del genere?
 

LucaMs

Expert
Licensed User
Longtime User
A parte che sconsiglio sempre di usare le ListView e di usare CustomListView o CheckList...

Dovrai eseguire un ciclo per tutti gli elementi della ListView, leggerne il contenuto (dalla label ad una variabile stringa, meglio in un array, anzi), esaminarne il contenuto (se conosci la posizione dei vari MN1, usando SubString e SubString2 altrimenti la cerchi con IndexOf), elimini l'elemento (puntato dalla variabile contatore del ciclo) e terminato il ciclo aggiungi nuovamente i testi nell'array alla ListView (se vuoi metterli in un'altra ListView li avrai già disponibili nell'array)

[Chiaramente i dati nella ListView li metti tu: non puoi ordinarli prima?]
 
Last edited:

MarcoRome

Expert
Licensed User
Longtime User
Ho bisogno di prelevare e di elencare secondo una determinata categoria alcuni prodotti da una listview piena di testi inseriti, ogni prodotto è contrassegnato da 3 lettere ad esempio: MN1 per una categoria, MN2 per unaltra categoria etc, ho bisogno di prelevare da questa listview questi elementi inseriti in maniera casuale e selezionarli tutti per categria uno sotto l'altro, quindi tutti quelli con MN1 poi a seguire tutti quelli con MN2 etc. poi li devo rimettere sempre in un'altra listview, qualcuno ha già fatto qualcosa del genere?
Hai un DB ?
 

fifiddu70

Well-Known Member
Licensed User
Longtime User
il db sqlite lo uso per memorizzare appunto le categorie, nella listview tutto viene preceduto appunto con MN1 per una categoria etc, vorrei poter estrapolare questi dati che vengono inseriti dall'operatore in maniera casuale per poi riassumerli in ordine di categoria, ma non so il codice per farlo. Premetto che è da molto tempo che non faccio programmazione e quindi sono rimasto un po indietro ma anche ricordo poco, come posso fare, un esempio di codice pratico?
 
D

Deleted member 103

Guest
Ciao Filippo,

non è difficile, prova così:

1) crea un Type es.:
B4X:
 Type lvSort(mn1 As String, str1 As String, str2 As String, str3 As String)
2) crea una Lista che memorizza tutti gli Item della Listview
3) nella Lista iserisci tutti i dati usando una variabile del tipo lvSort
esempio:
B4X:
    Dim item As lvSort
    item.Initialize
    item.mn1 = "mn1 blabla"
    item.str1 = "bobobooo"
    ...
    list.Add(item)
4) prima o dopo che hai riempito la Listview usa la funzione "SortType" per ordinare i dati.
B4X:
list.SortType("mn1", True)
5) dopodichè puoi usare la lista e estrare i dati ordinati
 

fifiddu70

Well-Known Member
Licensed User
Longtime User
mi dice che mi manca la libreria sort alla voce: Dim item as LvSort,
non so dove trovarla.
 

LucaMs

Expert
Licensed User
Longtime User
lvSort (brutto nome da dargli ;) meglio ItemData, ad esempio) è il tipo definito da Filippo (è un esempio, definiscilo come vuoi, con quanti "campi" vuoi, basta che il primo sia quello per l'ordinamento), dovrebbe funzionare.
 

fifiddu70

Well-Known Member
Licensed User
Longtime User
Ragazzi sono ormai vecchio per capire molte cose, qualcuno che vuole aiutarmi tramite skype, teamveawer? o telefono? 3382275504.
 

MarcoRome

Expert
Licensed User
Longtime User
Filippo puoi fare anche un sort tipo:
SELECT * FROM NOMETABELLA ORDER BY CATEGORIA ASC;

Fatto questo otterrai tutte le categorie ordinate una sotto l'altra.
Tutto qui
 
Top