Гость
Форумы / Android [игнор отключен] [закрыт для гостей] / Сортировка ArrayList<ContentValues> / 7 сообщений из 7, страница 1 из 1
19.03.2015, 22:26
    #38910472
Pashekka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка ArrayList<ContentValues>
Сразу скажу: раньше писал на Pascal. Решил попробовать силы в Android, честно сказать - многое поражает и радует :).
Не могу понять есть ли возможность отсортировать массив ContentValues?

Имеется вот такой массив:
Код: java
1.
private static final ArrayList <ContentValues> tmain = new ArrayList<ContentValues>();


Заполняется таким образом:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
ContentValues fieldtmain = new ContentValues();

fieldtmain.put("cal_ride", "Краснодар(Виктор)");
fieldtmain.put("cal_start","1306506600");
fieldtmain.put("cal_date","Mon Mar 02 06:00:00 GMT+00:00 2015");
fieldtmain.put("cal_description","Работа в офисе");
fieldtmain.put("n_family", "[Иванов, Петров, Сидоров]");

tmain.add(fieldtmain);


и так далее.
Необходимо отсортировать по Ключу cal_start , ключ может иметь повторения
Сделал по страринке :)
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
for (int i=0;i<tmain.size();i++) {
                    Long min = tmain.get(i).getAsLong("cal_start");
                    for (int j = i + 1; j < tmain.size(); j++) {
                        if (min > tmain.get(j).getAsLong("cal_start")) {
                            min = tmain.get(j).getAsLong("cal_start");
                            ContentValues cvmin = tmain.get(j);
                            tmain.set(j, tmain.get(i));
                            tmain.set(i, cvmin);
                        }
                    }


Все работает, но тут наткнулся на сортировку:

Код: java
1.
2.
3.
4.
5.
6.
7.
// Collections.sort(…)
List<ObjectName> list = new ArrayList<ObjectName>();
Collections.sort(list, new Comparator<ObjectName>() {
        public int compare(ObjectName o1, ObjectName o2) {
                return o1.toString().compareTo(o2.toString());
        }
});


Не пойму как применить к моей ситуации.
Возникли два вопроса:
1. Применимо ли оно вообще?
2. Если нет, то имеется ли способ без прямого перебора и кэширования в БД?
...
Рейтинг: 0 / 0
19.03.2015, 22:33
    #38910475
chpasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка ArrayList<ContentValues>
преамбула
перед походом на андроид следует изучить java se. это база, без которой нельзя.

Pashekka1. Применимо ли оно вообще?
да, только так и надо.

Код: java
1.
2.
3.
4.
5.
Collections.sort(list, new Comparator<ContentValues>() {
        public int compare(ContentValues o1, ContentValues o2) {
                //дальше сам догадайся
        }
});


но вообще архитектура странная, мягко говоря. я об использовании ContentValues таким способом
...
Рейтинг: 0 / 0
19.03.2015, 23:11
    #38910493
Pashekka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка ArrayList<ContentValues>
chpashaно вообще архитектура странная, мягко говоря. я об использовании ContentValues таким способом
Каким если не секрет?
...
Рейтинг: 0 / 0
20.03.2015, 00:06
    #38910519
Pashekka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка ArrayList<ContentValues>
Написал вот так:
Код: java
1.
2.
3.
4.
5.
6.
                List<ContentValues> list = new ArrayList<ContentValues>(tmain);
                Collections.sort(list, new Comparator<ContentValues>() {
                    public int compare(ContentValues o1, ContentValues o2) {
                        return o1.getAsLong("cal_start").compareTo(o2.getAsLong("cal_start"));
                    }
                });


проверил return сравнивает и возвращает верные значения, но tmain остается не от сортированным.
По чему не сортируется? Что то чувствую, что я не доделал где-то.
...
Рейтинг: 0 / 0
20.03.2015, 00:32
    #38910530
Pashekka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка ArrayList<ContentValues>
Ошибку понял, ночь туплю :)
Код: java
1.
2.
3.
4.
5.
                Collections.sort(tmain, new Comparator<ContentValues>() {
                    public int compare(ContentValues o1, ContentValues o2) {
                        return o1.getAsLong("cal_start").compareTo(o2.getAsLong("cal_start"));
                    }
                });
...
Рейтинг: 0 / 0
20.03.2015, 11:29
    #38910839
chpasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка ArrayList<ContentValues>
PashekkaКаким если не секрет?
ну похоже на то, что ты используешь его для тягания сырых данных по всему приложению. в андроиде есть всего пара мест где нужно использовать ContentValues. в остальных местах приложение должно оперировать объектами предметной области.
...
Рейтинг: 0 / 0
23.03.2015, 20:50
    #38914113
Pashekka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка ArrayList<ContentValues>
chpashaну похоже на то, что ты используешь его для тягания сырых данных по всему приложению. в андроиде есть всего пара мест где нужно использовать ContentValues. в остальных местах приложение должно оперировать объектами предметной области.
Сама программа парсит сайт, где весит расписание, беру данные и кэширую в БД, затем вытягиваю и наполняю приложение данными из БД.
У меня в итоге массив ContentValues в котором до 100 записей. Рассмотрев ContentValues пришел к выводу, что на данном этапе это самый простой вариант.
авторприложение должно оперировать объектами предметной области
была мысль создать класс tfieldmain, но как-то заморочено показалось.
...
Рейтинг: 0 / 0
Форумы / Android [игнор отключен] [закрыт для гостей] / Сортировка ArrayList<ContentValues> / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]