2012-06-01 20 views
41

Desidero ordinare un ArrayList da una proprietà. Questo è il mio codice ...Arraylist ordinamento Android per proprietà

public class FishDB{ 

    public static Object Fish; 
    public ArrayList<Fish> list = new ArrayList<Fish>(); 

    public class Fish{ 
     String name; 
     int length; 
     String LatinName; 
     //etc. 

     public Vis (String name) { 
      this.name = name; 
     } 
    } 

    public FishDB() { 
     Fish fish; 

     fish = new Fish("Shark"); 
     fish.length = 200; 
     fish.LatinName = "Carcharodon Carcharias"; 

     fish = new Fish("Rainbow Trout"); 
     fish.length = 80; 
     fish.LatinName = "Oncorhynchus Mykiss"; 

     //etc. 
     } 
    } 
} 

Ora voglio nel bisogno di risolvere questo ArrayList da una proprietà per esempio il latinname in un'altra attività. Ma non so come farlo. Qualcuno sa come?

+0

prova 'Collections.sort (arrayList);' – Lucifer

+0

@Lucifer Se lo fai, allora il tipo generico della tua arra yList dovrebbe implementare java.lang.Comparable –

risposta

115

è necessario implementare un Comparator, per esempio:

public class FishNameComparator implements Comparator<Fish> 
{ 
    public int compare(Fish left, Fish right) { 
     return left.name.compareTo(right.name); 
    } 
} 

e quindi ordinare in questo modo:

Collections.sort(fishes, new FishNameComparator()); 
+0

Grazie, ma ho ancora un problema. Voglio ordinare l'arraylist in un'attività. All'inizio sta: fishList di classe pubblica estende ListActivity { E quando scrivo public class FishNameComparator implements Comparator { Dà due errori dicendo: modificatore illegale per la classe locale FishNameComparator; solo l'astratto o il finale è permesso. E: Il tipo FishNameComparator deve implementare il metodo astratto ereditato Comparator .compare (String, String). Ho appena fatto ciò che sta nella tua risposta. – Simon

+2

@ user1380611: Se si sta implementando questa classe come classe nidificata, deve essere una 'classe statica'. E ho incasinato il mio esempio, dovrebbe essere "implementa il comparatore ". –

+0

Funziona perfettamente per me. Ordina in ordine crescente qui. –

40

si può semplicemente può fare come segue:

Collections.sort(list, new Comparator<Fish>() { 
    public int compare(Fish o1, Fish o2) { 
     return o1.name.compareTo(o2.name); 
    } 
}); 
+0

Risposta già pronunciata e accettata da K-ballo – Simon

+7

Sì, ma l'ha messo in un formato più accessibile. –

+1

Questo molto meglio! –

Problemi correlati