Jump to content

[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

Edited by Grummfy
Link to comment
Share on other 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)

Link to comment
Share on other 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

Edited by Grummfy
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...