Aller au contenu

[Résolu]ListView et ordre des éléments


Grummfy

Recommended Posts

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é par Grummfy
Lien vers le commentaire
Partager sur d’autres sites

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)

Lien vers le commentaire
Partager sur d’autres sites

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 Comparator

En espérant que cela aide

==> http://grummfy.be/blog/312

Modifié par Grummfy
Lien vers le commentaire
Partager sur d’autres sites

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...