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

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

Войти
Регистрация
Восстановить пароль
 
JIyrApy
32 / 32 / 1
Регистрация: 22.08.2010
Сообщений: 243
#1

Разбиение ListView - Android

23.05.2013, 17:26. Просмотров 826. Ответов 4
Метки нет (Все метки)

Здравствуйте.
Есть ListView с записями. Каждая запись имеет свою дату. Хочу разделить этот список по датам. Ну например блок записей каждого дня ограничивать каким-нить цветным разделителем (то есть в приделах дня разделитель обычный, а на границах дней - красный). Проблема в следующем - как отследить эту границу дней?
Понятно, что через адаптер. Попробовал вот так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
метод getView адаптера
...
MyCosts item=getItem(position);
Date createdDate=item.getCDate();
TextView thisday=(TextView)costsView.findViewById(R.id.thisday);  /*thisday является самым верхнем TextView в layout
 адаптера. Идея заключается в том, что если проскакивает граница дней, то в thisday записываем "Новый день", 
если не проскакивает, то сжимаем thisday до 1 пикселя) Может есть еще какой вариант решения подобной задачи?*/
        if(position==0){
            thisday.setText("Новый день"); // самая верхняя запись, логично, что по любому новый день
        }else{
            MyCosts previtem=getItem(position-1); // если не верхняя запись, то берем предыдущую запись
                Date prevdate=previtem.getCDate(); // и сравниваем ее день, месяц и год с такими же данными у текущей
            if(prevdate.getYear()==createdDate.getYear()&&prevdate.getMonth()==createdDate.getMonth()&&prevdate.getDay()==createdDate.getDay()){
                thisday.setText("");
                thisday.setHeight(1);
                
            }else{
                thisday.setText("Новый день"); // если не совпадает, то у текущей  запишем "Новый день"
            }
        }
...
Что получается. При выводе списка - все норм, но стоит добавить новую запись в список или удалить (в общем применить notifyDataSetChanged()) - все слетает, остается сплошной список (ну кроме первой записи, так как добавление идет в верхнюю строку и она имеет 0 позицию).
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2013, 17:26     Разбиение ListView
Посмотрите здесь:

Android Scroll Listview
Android Timer в ListView
Scroll listview Android
ListView обновление Android
Android Изменить ListView
Глючит ListView Android
Android Изменить ListView
ListView не работает Android
Альтернатива ListView Android
Разбиение строки Android
Android Сортировка в listview
ListView с датами Android

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
23.05.2013, 18:41     Разбиение ListView #2
подебагайте.
JIyrApy
32 / 32 / 1
Регистрация: 22.08.2010
Сообщений: 243
23.05.2013, 22:43  [ТС]     Разбиение ListView #3
Хм, странно как то notifyDataSetChaged работает. Поставил вывод логов прямо в адаптере, так судя по ним, получается, что getview срабатывает по три круга. То есть три раза выводился весь список. То есть добавление, обновление записи - список по три раза выводится, а если удаляю запись - один, как и надо.
Видимо сам принцип вывода такой. но сейчас другой вопрос.
Как виверу поставить атрибут height типа match_parent или wrap_content не в разметке xml, а в коде программы?
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
23.05.2013, 23:07     Разбиение ListView #4
что такое вивер?

Добавлено через 1 минуту
Java
1
2
LinearLayout.LayoutParams trparams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
view.setLayoutParams(trparams);
JIyrApy
32 / 32 / 1
Регистрация: 22.08.2010
Сообщений: 243
24.05.2013, 07:36  [ТС]     Разбиение ListView #5
Решил проблему свою. Все было на много проще. Зачем с height мудрил. Лучше всего с Visible TextView'а надо было поиграться. То есть где выводим "новый день" - видимый элемент, где нет - невидимый.
Yandex
Объявления
24.05.2013, 07:36     Разбиение ListView
Ответ Создать тему
Опции темы

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