Autore Topic: Query e ordinamento array  (Letto 799 volte)

Offline Summ3r

  • Nuovo arrivato
  • *
  • Post: 15
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Mac OS X 10.6
Query e ordinamento array
« il: 02 Settembre 2011, 19:39:10 CEST »
0
Ciao a tutti

Sto sviluppando una applicazione per la ricerca di punti di interesse(POI)
Il problema che mi trovo di fronte è il seguente:
-Eseguo una query al content provider per raccogliere le informazioni relative ai nomi dei POI
-Prendo le coordinate dei vari punti e ne calcolo la distanza dalla mia posizione attuale.Salvo le distanze calcolate in un array.
-La ricerca deve restituire i nomi dei POI trovati ordinati in modo crescente secondo la distanza dall'utente

Il problema è che non so come fare a ordinare in modo crescente l'array  contenente le varie distanze mantenendo il riferimento al nome del punto corretto.
Mi potete aiutare?
Grazie

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +507
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Query e ordinamento array
« Risposta #1 il: 02 Settembre 2011, 21:30:56 CEST »
+1
Anche tu progetto unimi? :)

Cmq io farei in questo modo:
-crei una classe apposita dove salvi nome e distanza dalla posizione attuale
-Quando tiri fuori i dati dal content provider crei un ArrayList di elementi della classe sopra creata
-Ordini l'ArrayList con questo metodo:

http://download.oracle.com/javase/1.4.2/docs/api/java/util/Collections.html#sort(java.util.List, java.util.Comparator)

andandoti quindi a creare  un apposito Comparator.

Offline Summ3r

  • Nuovo arrivato
  • *
  • Post: 15
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Mac OS X 10.6
Re:Query e ordinamento array
« Risposta #2 il: 03 Settembre 2011, 21:30:35 CEST »
0
Si si progetto unimi!  :-)
Ho risolto! Però non sono riuscito ad implementare a livello di codice la soluzione che mi avevi suggerito.
Ho fatto a modo mio.
Praticamente ho fatto così:
-Salvo i risultati della query in un array bidimensionale prendendo solo i dati che mi interssano (nome,categoria e distanza che vengono salvati su colonne diverse dell'array).
-Se è presente più di una riga all'interno array faccio un ordinamento per campo (nel mio caso i poi vengono ordinati per distanza)
in questo modo:

Codice (Java): [Seleziona]
               // ordinamento array per distanza
               // i = numero di risultati trovati
               String temp;
                for (int x=0;x<i-1;x++)
                {
                        for (int y=x+1;y<=i-1;y++)
                        {
                                if(Integer.parseInt(poi[x][2]) > Integer.parseInt(poi[y][2]))
                                {
                                        for (int z=0;z<3;z++)
                                        {
                                                temp=poi[x][z];
                                                poi[x][z]=poi[y][z];
                                                poi[y][z]=temp;
                                        }
                                }
                        }
                }

-Dopodichè eseguo un ciclo che mi memorizza i dati ordinati in un array monodimensionale, per poterlo adattare alla listview che visualizzerà così i risultati della ricerca

Sembra che tutto funzioni per il meglio

Ti ringrazio comunque per il tuo aiuto.  ;-)