Grummfy Posted June 13, 2010 Share Posted June 13, 2010 (edited) 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 Edited June 19, 2010 by Grummfy Quote Link to comment Share on other sites More sharing options...
Pierre87 Posted June 19, 2010 Share Posted June 19, 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) Quote Link to comment Share on other sites More sharing options...
Grummfy Posted June 19, 2010 Author Share Posted June 19, 2010 (edited) 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 Edited June 19, 2010 by Grummfy Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.