Italian Realizzo di una lista in ordine alfabetico , ma come ?

PakoT52

Active Member
Licensed User
Longtime User
Come dal titolo devo fare una lista in ordine alfabetico , avevo pensato ad un TabHost , ma esce troppo grande e pure che sul mio device riesco a farle entrare tutte ( 1080x1920 ) nei device più piccolo credo sarebbe impossibile usarlo , come posso fare ?
 

djveleno

Active Member
Licensed User
Longtime User
Puoi usare la classe LIST della libreria CORE, che ha un metodo SORT(Ascending As Boolean), e quindi ha anche il metodo Descending.
Si può usare solo con stringhe o numeri.
 

PakoT52

Active Member
Licensed User
Longtime User
Grazie , ho visto adesso che la libreria è gia installata , ma come la uso ? Non ho trovato niente ..
 
Last edited:

djveleno

Active Member
Licensed User
Longtime User
Ti posto l'esempio ufficiale che usa il metodo SortType.
B4X:
SortType

Tipo
metodo

Descrizione
Sorts a list with items of user defined type. The list is sorted based on the specified field.
FieldName - The case-sensitive field name that will be used for sorting. Field must contain numbers or strings.
Ascending - Whether to sort ascending or descending.
Example:

Sub Process_Globals
    Type Person(Name As String, Age As Int)
End Sub

Sub Activity_Create(FirstTime As Boolean)
    Dim Persons As List
    Persons.Initialize
    For i = 1 To 50
        Dim p As Person
        p.Name = "Person" & i
        p.Age = Rnd(0, 121)
        Persons.Add(p)
    Next
    Persons.SortType("Age", True) 'Sort the list based on the Age field.
    For i = 0 To Persons.Size - 1
        Dim p As Person
        p = Persons.Get(i)
        Log(p)
    Next
End Sub

Sintassi
SortType(FieldName As String, Ascending As boolean)

Valore restituito
void
 

PakoT52

Active Member
Licensed User
Longtime User
In poche parole crea una list con Nome ed età e poi SortType che fa che non ho capito ?
 

djveleno

Active Member
Licensed User
Longtime User
SortType ti permette di ordinare la lista in ascendente o discendente (a-z o z-a) con la sintassi:

Sintassi
SortType(FieldName AsString, Ascending Asboolean)
 

PakoT52

Active Member
Licensed User
Longtime User
Ah , quindi se io in un list view ho : Alessio - Carlo - Gaetano - Barbara meli ordinerà in ordine Alfabetico giusto ?
 

PakoT52

Active Member
Licensed User
Longtime User
Non capisco come usarlo , questo è il mio codice , come faccio ad ordinarlo A - Z ?
B4X:
Sub Globals
    'These global variables will be redeclared each time the activity is created.
    'These variables can only be accessed from this module.
    Dim ListView1 As ListView
End Sub

Sub Activity_Create(FirstTime As Boolean)
    'Do not forget to load the layout file created with the visual designer. For example:
    Activity.LoadLayout("Home")
    ListView1.AddSingleLine("Mano")
    ListView1.AddSingleLine("Cena")
    ListView1.AddSingleLine("fasda")
    ListView1.AddSingleLine("zce")
    ListView1.AddSingleLine("iyu")
    ListView1.AddSingleLine("Fertre")
    ListView1.AddSingleLine("ter")
    ListView1.AddSingleLine("H")
    ListView1.AddSingleLine("Ifd")
    ListView1.AddSingleLine("gfdJ")
    ListView1.AddSingleLine("jkK")
End Sub
 

giannimaione

Well-Known Member
Licensed User
Longtime User
Listview.sort
da Ivano,
non esiste questa proprietà per la listview
PakoT52, devi dichiarare una LIST, e poi con la proprietà SORT ottieni un ordine alfabetico
B4X:
Dim ls As List
ls.Initialize
ls.AddAll(Array As String("gianni","mario","roberto","alfonso"))
ls.Sort(True)
Log("ordine crescente")
For i=0 To ls.Size-1
    Log(ls.Get(i))
Next
Log("ordine descrescente")
ls.Sort(False)
For i=0 To ls.Size-1
    Log(ls.Get(i))
Next
'oppure puoi eseguire un for ... next inverso 
'for i=ls.size-1 to 0
 

ivanomonti

Expert
Licensed User
Longtime User
hai ragione non sono stato corretto io a darti la spiegazione dovuta... eccola

B4X:
    Dim lis As List
    lis.Initialize
    lis.Add("Vacca")
    lis.Add("Mucca")
    lis.Add("Zanzara")
    lis.Add("Agnello")
    lis.Sort
    Dim listview1 As ListView
    For i = 0 To lis.Size-1
        listview1.AddSingleLine(lis.Get(i))
    Next
 

djveleno

Active Member
Licensed User
Longtime User
Nell'esempio tratto dal forum, la dichiarazione della variabile è Person As List, credo che questo comando (LIST) sia diverso da ListView e quindi il parametro SortType non venga accettato.
 

PakoT52

Active Member
Licensed User
Longtime User
Grazie mille a tutti per l'aiuto , funziona perfettamente . Ormai che siamo in argomento , se ho molti elementi in un list view Es : 50 Item e devo impostare che se si clicca un elemento del list view si apre un pagina web come mi conviene farlo ? Io lo sto facendo con il Ciclo IF però vedo che è abbastanza lungo se ho molti elementi
 
Top