Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
 Аватар для dajver
411 / 275 / 22
Регистрация: 18.09.2010
Сообщений: 1,114

ListView с разделителями

06.11.2015, 19:08. Показов 1354. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет, такой вопрос: делаю список с разделением по датам, даты в гсоне находятся в разброс, я их сортирую и потом пытаюсь добавить в шапку, но у меня получается так что добавляется все даты, а надо что бы добавлялась только один раз, а потом отображались данные косающиеся этих дат.

В общем я написал адаптер который ставит в шапку все, но мне надо как то убрать дубликаты, что бы даты которые похожи не ставились, а просто заменялись, или удалялись или я не знаю что делать... Может подскажите, вот мой код.

Кликните здесь для просмотра всего текста
Адаптер
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
72
73
74
75
76
public class TestAdapter extends BaseAdapter {
 
    private static final int TYPE_ITEM = 0;
    private static final int TYPE_SEPARATOR = 1;
    private static final int TYPE_MAX_COUNT = TYPE_SEPARATOR + 1;
 
    private ArrayList<String> mData = new ArrayList<String>();
    private LayoutInflater mInflater;
 
    private TreeSet<Integer> mSeparatorsSet = new TreeSet<Integer>();
 
    public TestAdapter(Context context) {
        mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
 
    public void addItem(final String item) {
        mData.add(item);
        notifyDataSetChanged();
    }
 
    public void addSeparatorItem(final String item) {
        mData.add(item);
        mSeparatorsSet.add(mData.size() - 1);
        notifyDataSetChanged();
    }
 
    @Override
    public int getItemViewType(int position) {
        return mSeparatorsSet.contains(position) ? TYPE_SEPARATOR : TYPE_ITEM;
    }
 
    @Override
    public int getViewTypeCount() {
        return TYPE_MAX_COUNT;
    }
 
    public int getCount() {
        return mData.size();
    }
 
    public String getItem(int position) {
        return mData.get(position);
    }
 
    public long getItemId(int position) {
        return position;
    }
 
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder = null;
        int type = getItemViewType(position);
        if (convertView == null) {
            holder = new ViewHolder();
            switch (type) {
                case TYPE_ITEM:
                    convertView = mInflater.inflate(R.layout.first_snippet, null);
                    holder.textView = (TextView)convertView.findViewById(R.id.text);
                    break;
                case TYPE_SEPARATOR:
                    convertView = mInflater.inflate(R.layout.second_snippet, null);
                    holder.textView = (TextView)convertView.findViewById(R.id.textSeparator);
                    break;
            }
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder)convertView.getTag();
        }
        holder.textView.setText(mData.get(position));
        return convertView;
    }
 
    public static class ViewHolder {
        public TextView textView;
    }
 
}
Как я сетю данные из фрагмента
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
private TestAdapter generateAdapter(String result) {
        ArrayList<CalendarModel> model = parseCalendarGson(result);
        Collections.sort(model, new CalendarDateComparator());
        TestAdapter adapter = new TestAdapter(context);
        for (int i = 0; i < model.size(); i++) {
            CalendarModel calendarModel = model.get(i);
            if (dateComparator(calendarModel.getEventDate())) {
                adapter.addSeparatorItem(ParserHandler.cutDate(calendarModel.getEventDate()));
            }
            adapter.addItem(calendarModel.getIndicator().getName());
        }
        return adapter;
    }
 
private boolean dateComparator(String jsonDate) {
        Date newDate = parseStringToDate(ParserHandler.cutDate(jsonDate));
        Date oldDate = parseStringToDate(SharedPrefs.getDate(context));
        if(oldDate != null) {
            if (newDate.compareTo(oldDate) == 0) {
                return true;
            } else {
                SharedPrefs.saveDate(context, jsonDate);
                return false;
            }
        } else {
            SharedPrefs.saveDate(context, jsonDate);
            return false;
        }
    }
 
    private Date parseStringToDate(String dateString) {
        DateFormat formatter ;
        Date date = null;
        try {
            formatter = new SimpleDateFormat("dd-MM-yyyy");
            date = (Date) formatter.parse(dateString);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.11.2015, 19:08
Ответы с готовыми решениями:

Строки с разделителями
здравствуйте! Я в хранимую процедуру передаю строку, в которой перечислены имена через запятую. как в теле процедуры можно обратиться в...

Файл с разделителями
Никак не пойму, в общем написал код &lt;?php $host = &quot;localhost&quot;; $user = &quot;root&quot;; $password = &quot;&quot;; $db = &quot;db&quot;; ...

Список с нулями-разделителями
Используя цикл, создайте приведенный ниже список, который состоит из разделенных все большим количеством нулей. Последние два в списке...

4
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
06.11.2015, 19:24
dajver, привет. Если я правильно понял, то вот эта библиотека поможет.
0
 Аватар для dajver
411 / 275 / 22
Регистрация: 18.09.2010
Сообщений: 1,114
06.11.2015, 19:27  [ТС]
Цитата Сообщение от Spelcrawler Посмотреть сообщение
dajver, привет. Если я правильно понял, то вот эта библиотека поможет.
Не совсем) Проблема в другом, у меня есть json, в котором находятся даты, json идет большим длинным массивом, вот я беру оттуда дату, сравниваю с предыдущей и если она совпадает то ставлю то что внутри гсона относящегося к этой дате в список, иду дальше, если дата не сходится то делаю новый хеадер с новой датой и подставляю туда следующий данные, дальше снова дата другая, снова подставляю хеадер с новой датой и под этим хеадером собираю айтемы которые косаются этой даты....

Как то так, как смог объяснил)
0
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
06.11.2015, 19:34
Лучший ответ Сообщение было отмечено dajver как решение

Решение

Честно не сильно вник в код, но как я понял метод dateComparator возвращает true, если даты одинаковые. Если так то нужно добавлять хидер, когда метод вернет false, а не true.

Не по теме:

И не плохо было бы назвать метод так чтобы было понятно в каком случае он что вернет)

1
 Аватар для dajver
411 / 275 / 22
Регистрация: 18.09.2010
Сообщений: 1,114
06.11.2015, 19:38  [ТС]
Цитата Сообщение от Spelcrawler Посмотреть сообщение
Честно не сильно вник в код, но как я понял метод dateComparator возвращает true, если даты одинаковые. Если так то нужно добавлять хидер, когда метод вернет false, а не true.
Капец, весь день занимался сексом с этим... А оказалась такая фигня, огромное спасибо... Не знаю как отблагодарить) Но блин, реально помог очень.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.11.2015, 19:38
Помогаю со студенческими работами здесь

Ввод из файла с разделителями
Проблема следующая: как ввести из файла произвольное количество целых чисел, между которыми не пробел, а разделитель (например,...

Чтение из файла с разделителями
Всем доброго времени суток. Вопрос по чтению из CSV файла с разделителями Структура файла следующая: ...

Разбить строку разделителями
Добрый день! Есть часть командника: SET ret=%1%,%2%,6%3%,2%4%,%5% , где 1,2,3,4,5 (какие то переменные) SET =%ret% echo %ret%...

Вхождение в строке с разделителями
Доброе утро ув. Программисты! Есть строка: 11111111111;22222222222;3333;44444;55555;66;7 Как быстрым способом вывести второе...

Массив строк с разделителями
Привет! Подскажите пожалуйста, есть у меня массив, каждый элемент которого представляет собой строку с разделителями, например:...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru