IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Tri d'un ArrayList


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Etudiante
    Inscrit en
    Février 2013
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Etudiante
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2013
    Messages : 95
    Par défaut Tri d'un ArrayList
    Bonjour tout le monde,
    J'ai triée une liste d'objet selon un attribut de l'objet qui la constitue.
    Ensuite j'essaie d'afficher des autres attributs mais j'obtient toujours l'ordre des éléments de la liste avant le trie .
    Il n'y a pas des erreurs dans mon logcat et voila mon code de trie et d'affichage:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    	protected void onPostExecute(JSONObject json) {
     
    						try {
     
    							// récupérer le tableau lignes
    							JSONArray lignes = json.getJSONArray(TAG_rows);
    							// récupérer le tableau elements
    							JSONObject elements = lignes.getJSONObject(0);
    							JSONArray results = elements.getJSONArray(TAG_elements);
    							// parcourir toute la liste des employés
    							for(int i = 0; i < results.length(); i++){
    					 			// récupérer un element de type JSONObject
    								JSONObject el = results.getJSONObject(i);
    								// récupérer le JSONObject Distance qui contient deux items
    								JSONObject dist = el.getJSONObject(TAG_distance);
    								String value = dist.getString(TAG_value);
    								int val_dist=Integer.parseInt(value);
    								myList.get(i).setDistance(val_dist);
    							}
    			}
     
     
    						catch(JSONException e)
    						{
    							e.printStackTrace();
    						}
    					};
     
    				}.execute();
    			}
    		Collections.sort(this.myList, Place.DST_COMPARATOR);
     
    		for(int i=0;i<myList.size();i++)
    		{
    			HashMap<String, String> map = new HashMap<String, String>();
    			map.put("id",  String.valueOf(i));
    			map.put("name",myList.get(i).getNom());
    			map.put("adresse", myList.get(i).getAdresse());
    			list.add(map);
    		}
    		  ListAdapter adapter = new SimpleAdapter(this, list , R.layout.activity_trie, 
                      new String[] { "name", "adresse" }, 
                      new int[] { R.id.item_title, R.id.item_subtitle });
     
      setListAdapter(adapter);
      final ListView lv = getListView();
      lv.setTextFilterEnabled(true);	
      lv.setOnItemClickListener(new OnItemClickListener() {
      	public void onItemClick(AdapterView<?> parent, View view, int position, long id) {        		
      		HashMap<String, String> o = (HashMap<String, String>) lv.getItemAtPosition(position);	        		
      		Toast.makeText(Trie.this, "ID '" + o.get("id") + "' was clicked.", Toast.LENGTH_SHORT).show(); 
     
    		}
    	});
    		}

    Aidez moi s'il vous plait et merci d'avance .

  2. #2
    Membre expérimenté
    Profil pro
    Opération
    Inscrit en
    Décembre 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Opération

    Informations forums :
    Inscription : Décembre 2012
    Messages : 91
    Par défaut
    Si le tri n'est pas correcte c'est que votre comparateur ne l'est pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Collections.sort(this.myList, Place.DST_COMPARATOR);
    Quel est le code de votre comparateur "Place.DST_COMPARATOR" ?

  3. #3
    Membre confirmé
    Femme Profil pro
    Etudiante
    Inscrit en
    Février 2013
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Etudiante
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2013
    Messages : 95
    Par défaut
    Merci pour votre réponse jdevbe.
    voila mon code de comparateur dans la classe Place.java:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    package com.example.projet_fin_etude;
     
     
     
     
     
     
     
    import java.io.Serializable;
    import java.util.Comparator;
     
     
     
     
    public class Place implements Serializable  {
     
     
    	/**
             * 
             */
    	private static final long serialVersionUID = -581071003550724327L;
    	/**
             * 
             */
     
    	private String reference;
    	private String nom;
    	private String adresse ;
    	private double latitude ;
    	private double longitude;
    	private int distance;
    	public Place()
    	{
     
    	}
    	public Place(String reference,String nom,String adresse,double latitude, double longitude, int distance)
    	{
    		this.reference=reference;
    		this.nom=nom;
    		this.adresse=adresse;
    		this.latitude=latitude;
    		this.longitude=longitude;
    		this.distance=distance;
     
    	}
     
     
     
    	public String getReference() {
    		return reference;
    	}
     
    	public void setReference(String reference) {
    		this.reference = reference;
    	}
     
    	public String getNom() {
    		return nom;
    	}
     
    	public void setNom(String nom) {
    		this.nom = nom;
    	}
     
    	public String getAdresse() {
    		return adresse;
    	}
     
    	public void setAdresse(String adresse) {
    		this.adresse = adresse;
    	}
    	public double getLatitude() {
    		return latitude;
    	}
     
    	public void setLatitude(double latitude) {
    		this.latitude = latitude;
    	}
    	public double getLongitude() {
    		return longitude;
    	}
     
    	public void setLongitude(double longitude) {
    		this.longitude = longitude;
    	}
    	public int getDistance() {
    		return distance;
    	}
     
    	public void setDistance(int distance) {
    		this.distance = distance;
    	}
     
     
     
    	public static final Comparator<Place> DST_COMPARATOR = new Comparator<Place>() {
     
     
    		@Override
    		public int compare(Place arg0, Place arg1) {
    			// TODO Auto-generated method stub
    			Place p=(Place) arg0;
    			Place q=(Place) arg1;
    			  if(p.distance == q.distance)
    			  {    
    				  return 0;
    			  }  else if (p.distance > q.distance)  return 1;
    			  else return -1;				
    		}
     
     
     
        };
     
     
     
     
     
     
    }

  4. #4
    Membre expérimenté
    Profil pro
    Opération
    Inscrit en
    Décembre 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Opération

    Informations forums :
    Inscription : Décembre 2012
    Messages : 91
    Par défaut
    Le comparateur semble correcte.
    Éventuellement il peut être simplifié:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public static final Comparator<Place> DST_COMPARATOR = new Comparator<Place>() {
      @Override
      public int compare(Place arg0, Place arg1) {
         return arg0.distance - arg1.distance;
    }
    Est-ce bien sur le champ 'distance' que vous souhaitez trier ?
    Car dans la vue je ne voit que "name" et "adresse"...

  5. #5
    Membre confirmé
    Femme Profil pro
    Etudiante
    Inscrit en
    Février 2013
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Etudiante
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2013
    Messages : 95
    Par défaut
    Merci bien,
    Je veux afficher les noms et les adresses les plus proches en distance de l'utilisateur .Mais est ce que si je vais afficher la distance l'erreur va être corriger?
    Si vous avez plus des idées , aidez moi .

  6. #6
    Membre expérimenté
    Profil pro
    Opération
    Inscrit en
    Décembre 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Opération

    Informations forums :
    Inscription : Décembre 2012
    Messages : 91
    Par défaut
    Citation Envoyé par Arwa89 Voir le message
    Je veux afficher les noms et les adresses les plus proches en distance de l'utilisateur .Mais est ce que si je vais afficher la distance l'erreur va être corriger?
    Non l'erreur restera, mais cela permettra de voir quelle est la valeur de 'distance' . Peut-être que le tri est correct mais la valeur n'est pas la valeur de 'distance'...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. tri d'un ArrayList
    Par sos dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 19/03/2010, 05h40
  2. Tri d'un arrayList d'Object[]
    Par Lex92 dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 24/09/2008, 16h47
  3. tri d une arraylist
    Par *alexandre* dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 22/09/2008, 10h03
  4. Tri d'une ArrayList de tableaux
    Par Alqualonde dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 20/12/2006, 15h22
  5. tri d'une arraylist d'interface
    Par dude666 dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 26/11/2006, 16h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo