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

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

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

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

26.05.2016, 21:47. Просмотров 145. Ответов 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
Пишу приложение афишы кинотеатра. В базе данных есть стобцы: название, жанр, страна, время показа. Вот эти данные думаю подгружать...

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 четыре...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Beezy
0 / 0 / 0
Регистрация: 14.09.2014
Сообщений: 151
27.05.2016, 07:37  [ТС]     Сортировка в listview #2
подскажите, пожалуйста
Pablito
2410 / 1855 / 581
Регистрация: 12.05.2014
Сообщений: 6,591
Завершенные тесты: 1
27.05.2016, 10:16     Сортировка в listview #3
Цитата Сообщение от Beezy Посмотреть сообщение
явой занимаюсь неделю
начни с HelloWorld
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
27.05.2016, 11:00     Сортировка в listview #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Beezy, привет!
Коллекцию propArr можно сортировать через Collections.sort. После применения сортировки адаптер надо обновить через adapter.invalidate() или adapter.notifyDatasetChanged().
fraley
103 / 103 / 37
Регистрация: 24.05.2015
Сообщений: 313
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