Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 14.09.2014
Сообщений: 173

Сортировка в listview

26.05.2016, 21:47. Показов 2360. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, планирую разобраться с сортировкой элементов списка. Сортировка будет по идентификатору или имени каждого элемента списка. В идеале - как на скрине, чтобы при клике на кнопочку, выходили различные вариации списка, т.е. с различной сортировкой. Вопрос: может есть какой-нибудь несложный способ реализации?
Список формируется через adapter, данные получены из БД
Кликните здесь для просмотра всего текста
Java
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
//проверяем выполнение через try
            try {
                int good = json.getInt(TAG_SUCCESS);
 
                if(good == 1) {
                    //запись успешно добавлена, обрабатываем список заявок
                    properties = json.getJSONArray(TAG_PROPERTIES);
 
                    for(int i = 0; i < properties.length(); i++) {
                        //перебираем элементы массива
                        JSONObject propEl = properties.getJSONObject(i);
                        String numb = propEl.getString(TAG_NUMB);
                        String cause = propEl.getString(TAG_CAUSE);
                        String soname = propEl.getString(TAG_SONAME);
                        String name = propEl.getString(TAG_NAME);
                        String otch = propEl.getString(TAG_OTCH);
                        String phone = propEl.getString(TAG_PHONE);
                        String home = propEl.getString(TAG_HOME);
                        String flat = propEl.getString(TAG_FLAT);
                        String street = propEl.getString(TAG_STREET);
                        String ind_condition = propEl.getString(TAG_INDCOND);
                        String condition = propEl.getString(TAG_CONDITION);
                        String answer = propEl.getString(TAG_ANSWER);
                        String data = propEl.getString(TAG_DATA);
                        //конкатенируем 3 переменные для ФИО
                        String fio = soname+" "+name+" "+otch;
 
                        //создаем карту
                        HashMap<String, String> map = new HashMap<String, String>();
 
                        //добавляем в нее значения key => value
                        map.put(TAG_NUMB, numb);
                        map.put(TAG_CAUSE, cause);
                        map.put(TAG_FIO, fio);
                        map.put(TAG_SONAME, soname);
                        map.put(TAG_NAME, name);
                        map.put(TAG_OTCH, otch);
                        map.put(TAG_PHONE, phone);
                        map.put(TAG_HOME, home);
                        map.put(TAG_FLAT, flat);
                        map.put(TAG_STREET, street);
                        map.put(TAG_INDCOND, ind_condition);
                        map.put(TAG_CONDITION, condition);
                        map.put(TAG_ANSWER, answer);
                        map.put(TAG_DATA, data);
 
                        //добавляем в массив все пары из карты
                        propArr.add(map);
                    }
 
                } else {
                    //ошибка в добавлении записи
                }
            } catch(JSONException e) {
                e.printStackTrace();
            }
            return null;
        }
 
        //закрываем диалоговое окно загрузки
        protected void onPostExecute(String url_server) {
            loadDialog.dismiss();
 
            //добавляем информацию из БД в listview
            ListAdapter adapter = new SimpleAdapter(
                listPropertiesActivity.this, propArr,
                R.layout.properties_list_item, new String[] { TAG_CAUSE, TAG_FIO, TAG_DATA}, new int[] { R.id.type_prop, R.id.fio_client, R.id.data_prop}
            );
            //обновляем
            prop_list.setAdapter(adapter);
        }


P.S.: явой занимаюсь неделю, за возможные ошибки извиняюсь. Заранее спасибо
Миниатюры
Сортировка в listview  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.05.2016, 21:47
Ответы с готовыми решениями:

Сортировка listView. Как узнать длину listview?
Есть listview состоящий из чисел(только числа в string). Как их сортировать по возрастанию? (т.е. так, чтобы на верхнем месте в listview...

Listview и сортировка
вобщем решил сделать сортировку,по числам норм сортирует,по именам нет,в чем проблема колонки такие номер...

Сортировка ListView
Здравствуйте. Помогите отсортировать список в ListView: final ArrayList&lt;String&gt; list = new ArrayList&lt;&gt;(); final...

4
0 / 0 / 0
Регистрация: 14.09.2014
Сообщений: 173
27.05.2016, 07:37  [ТС]
подскажите, пожалуйста
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
27.05.2016, 10:16
Цитата Сообщение от Beezy Посмотреть сообщение
явой занимаюсь неделю
начни с HelloWorld
0
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
27.05.2016, 11:00
Лучший ответ Сообщение было отмечено Beezy как решение

Решение

Beezy, привет!
Коллекцию propArr можно сортировать через Collections.sort. После применения сортировки адаптер надо обновить через adapter.invalidate() или adapter.notifyDatasetChanged().
1
111 / 111 / 43
Регистрация: 24.05.2015
Сообщений: 329
27.05.2016, 11:29
Лучший ответ Сообщение было отмечено Beezy как решение

Решение

А не проще ли(удобнее?) вместо HashMap использовать свой класс(в моем примере класс User)?
Тогда сортировка будет выглядеть так, по ID:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class SortedByID implements Comparator<User> {
    @Override
    public int compare(User first, User second) {
        int first_id=first.getId();
        int second_id=second.getId();
        if(first_id>second_id) {
            return 1;
        }else if(first_id<second_id){
            return -1;
        }else {
            return 0;
        }
    }
}
По имени:
Java
1
2
3
4
5
6
7
8
9
10
public class SortedByName implements Comparator<User> {
    @Override
    public int compare(User first, User second) {
 
        String first_name=first.getFirstName();
        String second_name=second.getFirstName();
 
        return first_name.compareTo(second_name);
    }
}
Ну и соответственно вызов из MainActivity:
По ID:
Java
1
2
Collections.sort(userArray, new SortedByID());
                adapter.notifyDataSetChanged();
По имени:
Java
1
2
Collections.sort(userArray, new SortedByName());
                adapter.notifyDataSetChanged();
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.05.2016, 11:29
Помогаю со студенческими работами здесь

Сортировка в ListView
Здравствуйте! Я решил написать класс интерфейса IComparer для того, чтобы сортировать элементы ListView по выбранному столбцу и с...

Сортировка в listView
Здравствуйте , я имею вот такую часть кода : private void button3_Click(object sender, EventArgs e) { ...

Сортировка listview
При нажатии на заголовок определенной ячейки listview произвести сортировку от А до Я, а при повторном нажатии от Я до А. То есть мне...

Сортировка в ListView
Уважаемое сообщество!!! Имею необходимость сортировки данных в ListView, но не имею навыков. Помогите, пжлст, хотя бы для элементарного...

Сортировка по дате в ListView
Уважаемые форумчане, подскажите как произвести сортировку по колонке в ListView, которая записывается в таком формате(см. скриншот).


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru