2013-09-16 2 views
-1

Я получаю данные JSON с сервера и могу разобрать данные JSON по коду. теперь сохраняет его в hashmap, а затем добавляет в arraylist и отображает в списке все кажется, работает отлично.Android sort a Hashmap in arraylist

HashMap<String, String> map = new HashMap<String, String>(); 
             map.put(Constants.KEY_REFERENCE,p.reference);      map.put(Constants.KEY_NAME, p.name); 
map.put("distance","p.distance"); 
ArrayListItems.add(map); 

Теперь, когда я отображать данные в ListView работает отлично, но теперь я хочу, чтобы отсортировать расстояние в порядке возрастания, с наименьшим, начиная с верхней части. Любая помощь будет оценена .THANKS заранее

теперь я в состоянии разобраться, но есть что-то не так с расстояния, когда я отобразить это показывает 1,23, 1,45 , 2,39, 3,56 , , а затем он показывает 0,38, 0,56.

Его не сортировка значений, начиная с 0

Так что, пожалуйста, помогите мне.

+1

возможно дубликат [Сортировка ArrayList пользовательских объектов по недвижимости] (http://stackoverflow.com/questions/2784514/sort-arraylist-of-custom-objects- by-property) с пользовательским объектом == 'HashMap ' и "property" == 'HashMap .get (" propertyName ")' ... – Selvin

+1

использовать SortedMap вместо Map. http://stackoverflow.com/questions/7427758/java-how-to-use-sortedmap и http://www.roseindia.net/java/example/java/util/sortedmap.shtml –

ответ

2

Я хотел бы посмотреть на Collections.sort(); и как вы можете использовать интерфейс Comparable для сортировки HashMap (путем переопределения метода compare()). Следующие article весьма полезны, потому что, если я не ошибаюсь, есть два разных способа, которыми вы можете сортировать HashMap; один по его клавишам, а другой по его значениям.

2

вы можете использовать это:

Collections.sort(arrayList, new Comparator<HashMap< String,String >>() { 

    @Override 
    public int compare(HashMap<String, String> lhs, 
      HashMap<String, String> rhs) { 
     // Do your comparison logic here and retrn accordingly. 
     return 0; 
    } 
});