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

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

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

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

26.05.2016, 21:47. Просмотров 161. Ответов 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  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2016, 21:47     Сортировка в listview
Посмотрите здесь:

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

id ListView - Программирование Android
как дать каждому item уникальный id d listview и использовать его для проверки базы данных помогите заранее спасибо

Listview - Программирование Android
Добрый день, В структуре ListView есть два элемента,которые он показывает Item и SubItem. В Item вставить значение не проблема,всё...

ListView - Программирование Android
Пытаюсь сделать по аналогии с уроком MySql + Android. Он есть проблема: ListView lv = getListView(); getListView подсвечивается...

ListView - Программирование Android
Добрый день. У меня есть лист ListView. Данные для заполнения он берет из таблицы БД. Таблица имеет два поля (имя, статус выполнения)....

из БД в ListView - Программирование Android
Пишу приложение афишы кинотеатра. В базе данных есть стобцы: название, жанр, страна, время показа. Вот эти данные думаю подгружать...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Beezy
0 / 0 / 0
Регистрация: 14.09.2014
Сообщений: 151
27.05.2016, 07:37  [ТС]     Сортировка в listview #2
подскажите, пожалуйста
Pablito
2455 / 1900 / 591
Регистрация: 12.05.2014
Сообщений: 6,702
Завершенные тесты: 1
27.05.2016, 10:16     Сортировка в listview #3
Цитата Сообщение от Beezy Посмотреть сообщение
явой занимаюсь неделю
начни с HelloWorld
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
27.05.2016, 11:00     Сортировка в listview #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Beezy, привет!
Коллекцию propArr можно сортировать через Collections.sort. После применения сортировки адаптер надо обновить через adapter.invalidate() или adapter.notifyDatasetChanged().
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.05.2016, 11:29     Сортировка в listview
Еще ссылки по теме:

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

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

Обновление listview - Программирование Android
Добрый день, у меня listview выводится через адаптер. По нажатию на чекбокс, меняется текст в listview. Как обновить listview, чтобы он...

ListView пустой - Программирование Android
Запутался. public class FragmentList extends Fragment implements AdapterView.OnItemClickListener{ private ListView listView; ...

отображение Listview - Программирование Android
Необходимо вывести строковый массив(listview_names) и осуществить поиск по его элементам... код получился следующий: public class...

Кастомизация ListView - Программирование Android
Добрый день. Создаю прокручиваемый список, в каждом поле четыре строки, проблема в написании кода. Создал в ресурсе strings четыре...


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

Или воспользуйтесь поиском по форуму:
fraley
105 / 105 / 38
Регистрация: 24.05.2015
Сообщений: 316
27.05.2016, 11:29     Сортировка в listview #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();
Yandex
Объявления
27.05.2016, 11:29     Сортировка в listview
Ответ Создать тему
Опции темы

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