Grummfy Posté(e) 13 juin 2010 Share Posté(e) 13 juin 2010 (modifié) Hello, J'ai une ListView dont le contenu est rempli par un tableau de string non ordonné. J'utilise un ArrayAdapter pour remplir la liste. J'aimerais qu'une fois la liste remplie celle-ci soit affichée, mais trier. J'aimerais donc savoir comment je puis faire cela. Le problème est que si je trie le tableau de string, l'ordre des éléments est changé, mais surtout après je ne sais pas sur quoi on a cliqué (si je mets un listener sur les click) sauf si je fais des comparaisons de string (ce qui veux dire bye-bye les versions multilingues). Bref avez-vous une idée afin d'avoir une liste remplie par un tableau de string que l'on puisse ordonner et que les id soient gardés. Merci Modifié 19 juin 2010 par Grummfy Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Pierre87 Posté(e) 19 juin 2010 Share Posté(e) 19 juin 2010 Crée une classe Java basique qui va "retenir" un élément de ta liste (son id, son texte, etc) Stocke ces éléments dans une ArrayList Utilise la classe Collection pour la trier n'oublie pas de rafraichir l'adapter après le tri si ton tri est rapide, tu peux le faire dans le UI thread (c'est mal, mais rapide) si c'est long... il faut le faire dans un thread à part (mais c'est délicat) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Grummfy Posté(e) 19 juin 2010 Auteur Share Posté(e) 19 juin 2010 (modifié) Merci, j'avais même essayer avec la méthode sort .. mais la position des élément n'est pas sauvée c 'est vraiment stupide ... ----------- Merci, enfaite j'ai fait ceci : Dans mon activité dans le onCreate(): Menu[] m = Menu.factory(ArrayDeString); ListView myList = (ListView) findViewById(android.R.id.list); ArrayAdapter Dans onItemClick : [code] System.out.print(position); System.out.print(" | "); System.out.print(parent.getItemAtPosition(position)); System.out.print(" | "); System.out.print(parent.getItemAtPosition(position).getClass()); System.out.print(" | "); System.out.print(((Menu)parent.getItemAtPosition(position)).getId()); System.out.print(" | "); System.out.println(id); Menu.java package org.android.bbox;import java.util.Comparator;public class Menu{ private int id; private String label; public Menu(int id, String label) { this.id = id; this.label = label; } public String getLabel() { return this.label; } public int getId() { return this.id; } public static Menu[] factory(String[] menus) { Menu[] menu = new Menu[menus.length]; for(int i = 0; i < menus.length; i++) { menu[ i ] = new Menu(i, menus[ i ]); } return menu; } public static ComparatorEn espérant que cela aide==> http://grummfy.be/blog/312 Modifié 19 juin 2010 par Grummfy Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Rejoignez la conversation
Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.