entanglement 22 de ago. de 2012
O jeito correto de fazer isso é ligar as duas coisas em uma única classe (que pode ser bem bobinha - não precisa nem ter setters nem getters).
Veja: <a href= "http://developer.android.com/reference/java/util/Collections.html#sort%28java.util.List%3CT%3E,%20java.util.Comparator%3C?%20super%20T%3E%29" > http://developer.android.com/reference/java/util/Collections.html#sort(java.util.List<T> ,%20java.util.Comparator<? % 20 super % 20 T > ) </ a >
e
< a href = "http://developer.android.com/reference/java/lang/String.html#compareToIgnoreCase%28java.lang.String%29" > http :// developer . android . com / reference / java / lang / String . html #compareToIgnoreCase(java.lang.String)</a>
class Friend {
public String id ;
public String name ;
}
...
public static void createListGroup (List <Friend> friends ) {
// obtém os amigos
...
// ordena-os por nomes
Collections .sort (friends , new Comparator <Friend> () {
public int compare (Friend f1 , Friend f2 ) {
return f1 .compareToIgnoreCase (f2 );
}
});
}
fabiobh 22 de ago. de 2012
valeu pela dica, vou tentar fazer e depois posto se consegui
caarlos0 22 de ago. de 2012
Também tem o Google Guava Ordering que ajuda bastante e te provê uma DSL bacana para fazer ordenações.
http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/Ordering.html
fabiobh 23 de ago. de 2012
Eu criei a classe Friend
public class Friend {
public String id ;
public String name ;
public Friend ( String idF , String nameF ){
id = idF ;
name = nameF ;
}
}
E adicionei os meus 2 arraylists de String a um novo arraylist de Friends
public static ArrayList < Friend > getTwitterFriends (
ArrayList < String > friendsNames , ArrayList < String > friendsIds ) {
ArrayList < Friend > friend = new ArrayList < Friend > ();
for ( int i = 0 ; i < friendsIds . size (); i ++ ) {
friend . add ( new Friend ( friendsIds . get ( i ), friendsNames . get ( i )));
}
return friend ;
}
Até ai tudo bem, porém na hora de usar o metodo
Collections .sort ( twitterFriends , new Comparator < Friend > () {
public int compare ( Friend f1 , Friend f2 ) {
return f1 .compareToIgnoreCase ( f2 ) ;
}
}) ;
Ta falando para eu criar o metodo compareToIgnoreCase na classe friends?
Eu tenho que implementar a ordem dentro da classe friends? Como?
entanglement 23 de ago. de 2012
Ah, desculpe (sempre que eu esqueço de testar antes dá isso).
Qual é o campo que você deseja ordenar, é por nome ou por id?
Se for por nome, você teria algo como:
Collections .sort ( twitterFriends , new Comparator < Friend > () {
public int compare ( Friend f1 , Friend f2 ) {
return f1 .name .compareToIgnoreCase ( f2 .name ) ;
}
}) ;
Se for por id, onde está escrito “name” escreva “id”. É só isso.
fabiobh 23 de ago. de 2012
Valeu, agora funcionou perfeitamente, muito obrigado.