Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Beezy
0 / 0 / 0
Регистрация: 14.09.2014
Сообщений: 151
#1

Сортировка в listview - Программирование Android

26.05.2016, 21:47. Просмотров 178. Ответов 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.: явой занимаюсь неделю, за возможные ошибки извиняюсь. Заранее спасибо
0
Миниатюры
Сортировка в listview  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2016, 21:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сортировка в listview (Программирование Android):

Сортировка контактов в ListView - Программирование Android
Здравствуйте! У меня есть контакты из телефонной книги, которые получаю так: public void getContacts(){ //...

ListView. После добавления кнопки перестал быть доступен сам ListView - Программирование Android
Кастомизировал ListView с помощью нескольких TextView. Но после того, как добавил ImageButton сам список стал недоступен для клика, а...

Listview вывод данных и переход по нажатию на другой Listview SQLite - Программирование Android
Доброго извините за название темы, долго не мог сформировать название, В общем у меня беда с пытаюсь написать программу где первый экран...

Данные из SQlite в ListView, обработка события ListView - Программирование Android
Ребят, есть БД, ListView. Надо при нажатии на строчку ListView вытащить данные int из БД. mList.setOnItemClickListener(new...

ListView, ToggleButton, SQLite, CursorAdapter. Как найти idItem в ListView, где была нажата ToggleButton? - Программирование Android
Добрый день. Затрудняюсь понять один момент: У меня есть ListView, который заполнен Items. Каждый Item - это свой XML. Пока...

Копирование данных из 1 listView во 2 listView - Программирование Android
Нужно что бы при нажатии на один элемент в первом ListView он копировался во второй ListView причём многократно.Но я использую...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Beezy
0 / 0 / 0
Регистрация: 14.09.2014
Сообщений: 151
27.05.2016, 07:37  [ТС] #2
подскажите, пожалуйста
0
Pablito
2498 / 1943 / 606
Регистрация: 12.05.2014
Сообщений: 6,811
Завершенные тесты: 1
27.05.2016, 10:16 #3
Цитата Сообщение от Beezy Посмотреть сообщение
явой занимаюсь неделю
начни с HelloWorld
0
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
27.05.2016, 11:00 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Beezy, привет!
Коллекцию propArr можно сортировать через Collections.sort. После применения сортировки адаптер надо обновить через adapter.invalidate() или adapter.notifyDatasetChanged().
1
fraley
106 / 106 / 40
Регистрация: 24.05.2015
Сообщений: 320
27.05.2016, 11:29 #5
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
А не проще ли(удобнее?) вместо 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.05.2016, 11:29
Привет! Вот еще темы с ответами:

Использование ListView в ListView - Программирование Android
Всем привет. Можете показать как использовать ListView в ListView, с заполнением как внешнего ListView, так и внутреннего причем с...

Переход из Listview в Listview - Программирование Android
Как сделать, что бы когда нажимаешь в главном листвью на кнопку, открывалось новое нужное(т.е. то по которому тапнули) активити с другим...

Listview в listview - Программирование Android
Добрый.. вечер. Вопрос такого плана - есть listview созданный через кастомный адаптер, в элементах этого listview есть еще один listview,...

ListView - Программирование Android
Как в ListView задавать значения Sub Item?


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
27.05.2016, 11:29
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru