pablan
Member
Ciao a tutti,
volevo chiedervi un aiuto. Ho creato una listview nella quale su doppia linea ho inserito il nome di un luogo (nella prima linea) e la distanza da un altro località (nella seconda linea). I dati li prende, con un ciclo for, da un database con colonna "nome" e colonne "latitudine" e "longitudine". Dopodichè ho inserito nella listview tutte le località che rientrano all'interno di un determinato raggio (con la libreria "gps" e il comando "distanceto"). Non riesco però a trovare un modo per ordinarli per distanza dal più vicino al più lontano. Mi vengono in mente dei possibili giri immensi per farlo ma immagino che ci sia qualche metodo più facile. Qui la parte del codice che riguarda il caricamento della listview (l'ho un po' accorciata). Grazie!
volevo chiedervi un aiuto. Ho creato una listview nella quale su doppia linea ho inserito il nome di un luogo (nella prima linea) e la distanza da un altro località (nella seconda linea). I dati li prende, con un ciclo for, da un database con colonna "nome" e colonne "latitudine" e "longitudine". Dopodichè ho inserito nella listview tutte le località che rientrano all'interno di un determinato raggio (con la libreria "gps" e il comando "distanceto"). Non riesco però a trovare un modo per ordinarli per distanza dal più vicino al più lontano. Mi vengono in mente dei possibili giri immensi per farlo ma immagino che ci sia qualche metodo più facile. Qui la parte del codice che riguarda il caricamento della listview (l'ho un po' accorciata). Grazie!
B4X:
Dim dist As Int
dim n as int
dim long as string
dim lat as string
n=0
luogo1.Latitude =dbCursor.GetString ("latitudine") 'carica la latitudine del luogo1 dal database
luogo1.Longitude=dbCursor.GetString ("longitudine") 'carica la longitudine del luogo1 dal database
For j = 0 To dbCursor.RowCount-1
DoEvents
dbCursor.Position=j
lat=dbCursor.GetString ("latitudine") 'carica la latitudine del luogo2 dal database
long=dbCursor.GetString ("longitudine")'carica la longitudine del luogo2 dal database
luogo2.latitude =lat
luogo2.longitude=long
If luogo1.DistanceTo (luogo2) < 500 Then
n=n+1 'contatore per numerare quanti bar vi sono in questo raggio
dist=luogo1.DistanceTo (luogo2)
listluoghi.AddTwoLines(dbCursor.GetString ("nome"),"a " & dist & " metri" ) 'carica la listview con doppia colonna
End If
Next
If n=0 Then 'se il numero di bar è uguale a 0
Msgbox("Nessuna attività trovata nel raggio di 500 metri","")
Else
listluoghi.Visible=True
End If