создание "смешанного" списка, комбинация простого и expandab

Интерфейс, диалоги, темы, стили, меню
Ответить
Idol
Сообщения: 55
Зарегистрирован: 26 июн 2013, 04:33

создание "смешанного" списка, комбинация простого и expandab

Сообщение Idol » 19 июл 2013, 00:12

как правильно организовать список, в котором могут быть включения с вложенным списком?

Проще наверно на примере:
есть список содержащий: Имя и Время
но часть этих пар объединены в группы (скажем, дневная группа), т.е. надо показать Имя_Группы и затем уже элементы этой группы.
Однако, не все элементы имеют какую-либо группу.
И группа должна быть раскрывающийся (expendable).
Имя Время
Имя Время
Имя_Группы
------ Имя Время
------ Имя Время
Имя Время

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: создание "смешанного" списка, комбинация простого и expa

Сообщение Foenix » 19 июл 2013, 00:20

по этому делу есть урок 45 http://startandroid.ru/ru/uroki/vse-uro ... tview.html
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Idol
Сообщения: 55
Зарегистрирован: 26 июн 2013, 04:33

Re: создание "смешанного" списка, комбинация простого и expa

Сообщение Idol » 19 июл 2013, 01:06

Foenix писал(а):по этому делу есть урок 45
Наверно я не совсем ясно написал вопрос.

Expandable список не позволяет создать, то что я хочу, т.к. не каждый child имеет группу.
Я не вижу пути, запихнуть child в список минуя включение в группу. Если вы знаете как, подскажите.

Пока на ум приходит, давать фейк группу для одиночных элементов (child) и задавать высоту такой группы =0, чтобы скрыть ее. Хотя пока не уверен, если это возможно.

Idol
Сообщения: 55
Зарегистрирован: 26 июн 2013, 04:33

Re: создание "смешанного" списка, комбинация простого и expa

Сообщение Idol » 19 июл 2013, 01:11

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

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: создание "смешанного" списка, комбинация простого и expa

Сообщение Foenix » 19 июл 2013, 01:12

я не использовала это дерево, но мне кажется, если ветке не добавлять детей, то это будет просто строка списка.
child - да, должен иметь родителя, а что тебе мешает сделать родителя без детей?
чайлда без родителя я с трудом себе представляю на экране.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Idol
Сообщения: 55
Зарегистрирован: 26 июн 2013, 04:33

Re: создание "смешанного" списка, комбинация простого и expa

Сообщение Idol » 19 июл 2013, 01:32

Foenix писал(а):
Не понял.

Существует список (в примере это Имя и Время), где часть пар объединены в группу.
Как Вы себе представляете часть child списка на одном уровне (group), а часть на другом (child)?
Думаете будет работать? или я не уловил вашей мысли?

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: создание "смешанного" списка, комбинация простого и expa

Сообщение Foenix » 19 июл 2013, 02:10

а, блин, поняла
ну загугли ExpandableListView with empty group
вот что нашла, там пример есть.
http://mylifewithandroid.blogspot.ru/20 ... roups.html
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Idol
Сообщения: 55
Зарегистрирован: 26 июн 2013, 04:33

Re: создание "смешанного" списка, комбинация простого и expa

Сообщение Idol » 19 июл 2013, 02:56

повидимому Вы все таки не доконца уловили идею. Почитайте мою ссылку в предыдущих постах (там короткий блог).

Подобное не так то просто реализовать (если вообще возможно), поэтому я и попробовал просто скрыть группы с одиночными элементами, но и здесь засада. Не могу найти пути назначить высоту элемента программно, даже в кастомном адаптере.
Может натолкнете на путь истинный? Гугл ничего не дал.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: создание "смешанного" списка, комбинация простого и expa

Сообщение Foenix » 19 июл 2013, 03:10

Idol писал(а):повидимому Вы все таки не доконца уловили идею. Почитайте мою ссылку в предыдущих постах (там короткий блог).

Подобное не так то просто реализовать (если вообще возможно), поэтому я и попробовал просто скрыть группы с одиночными элементами, но и здесь засада. Не могу найти пути назначить высоту элемента программно, даже в кастомном адаптере.
Может натолкнете на путь истинный? Гугл ничего не дал.
Я честно говоря не знаю как быстренько тебе помочь. Тут на форуме обсуждалось несколько раз еще более общий случай - целое дерево - с любым количеством веток и подветок. Я его тоже реализовывала в своей программе. Просто я к тому, что твои слова "если вообще возможно" - тут я точно могу сказать - конечно возможно. Просто на твой случай, по-моему, можно найти совсем какое-то простое решение.
http://code.google.com/p/tree-view-list ... %2Fpolidea
(обсуждение было в ветке по 45-му уроку, кажется)
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: создание "смешанного" списка, комбинация простого и expa

Сообщение Foenix » 19 июл 2013, 03:13

и не вижу сложности адаптировать список по предложенной тобой ссылке, если он тебе подходит. Если ты читал урок по кастомному адаптеру к списку, то знаешь, что это всего лишь лэйаут строки списка упростить -вот и не будет лишних тебе там строк, подробностей и т.д.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Idol
Сообщения: 55
Зарегистрирован: 26 июн 2013, 04:33

Re: создание "смешанного" списка, комбинация простого и expa

Сообщение Idol » 19 июл 2013, 05:54

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

Код: Выделить всё

--start--
Item1
Item2
Item3
    subitem1
    subitem2
    subitem3
Item4
Item5
    subitem1
    subitem2
    subitem3
--end--
У меня листва без дерева:

Код: Выделить всё

--start--
subitem1
subitem2
subitem3
Item1
    subitem4
    subitem5
    subitem6
subitem7
subitem8
Item2
    subitem9
    subitem10
    subitem11
--end--
Т.е. существует список данных (subitems) и у части этих данных есть какой-то общий признак. Вот этот признак и выводится впереди всей группы (как Item). Плюс к этому, эта группа должна сворачиваться/разворачиваться.

т.е. здесь не классический структура группа-подгруппа. Однако, лучшего представления информации, чем список-дерево я не вижу.

Idol
Сообщения: 55
Зарегистрирован: 26 июн 2013, 04:33

Re: создание "смешанного" списка, комбинация простого и expa

Сообщение Idol » 19 июл 2013, 06:03

Foenix писал(а):и не вижу сложности адаптировать список по предложенной тобой ссылке, если он тебе подходит. Если ты читал урок по кастомному адаптеру к списку, то знаешь, что это всего лишь лэйаут строки списка упростить -вот и не будет лишних тебе там строк, подробностей и т.д.
Как я описал постом выше, хоть список-дерево и не красивое решение, но другого пока нет.
Пытаюсь создавая фейк группы, потом их прятать при отображении.
Следующий метод сработал, но с ограничениями. Не принимает параметра = 0.

Код: Выделить всё

LayoutParams param = paramView.getLayoutParams();
param.height = 1;
paramView.setLayoutParams(param);
Это часть кода из кастомного CursorAdapter под bindView.

Может есть какой другой способ задать нулевую величину высоты View?

PS
думал, что будет работать:

Код: Выделить всё

paramView.setVisibility(paramView.GONE);
, но нет, текст исчезает, а место под элемент списка (View) остается. Однако похоже, что я просто не разобрался, как это работает. По идеи должно исчезать все.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: создание "смешанного" списка, комбинация простого и expa

Сообщение Foenix » 19 июл 2013, 12:27

у тебя вообще тогда не дерево, а просто список с подзаголовками. Такое и в samples андроида есть, просмотри там примеры со списками.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Idol
Сообщения: 55
Зарегистрирован: 26 июн 2013, 04:33

Re: создание "смешанного" списка, комбинация простого и expa

Сообщение Idol » 22 июл 2013, 00:49

Foenix писал(а):у тебя вообще тогда не дерево, а просто список с подзаголовками. Такое и в samples андроида есть, просмотри там примеры со списками.
Вы правы, за одним маленьким исключением. Список с подзаголовками не сворачивается, а хотелось бы.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: создание "смешанного" списка, комбинация простого и expa

Сообщение Foenix » 22 июл 2013, 00:55

да делай просто дерево, какая разница ветки это у тебя или листья. Разница лишь в том, что одни разворачиваются другие нет.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Idol
Сообщения: 55
Зарегистрирован: 26 июн 2013, 04:33

Re: создание "смешанного" списка, комбинация простого и expa

Сообщение Idol » 22 июл 2013, 01:26

Foenix писал(а):да делай просто дерево, какая разница ветки это у тебя или листья. Разница лишь в том, что одни разворачиваются другие нет.
Разница громадная, листья идут то на одном уровне, то на другом. И это не позволяет использовать Expandable прям как есть.

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

Код: Выделить всё

public void bindView(View paramView, Context paramContext, Cursor paramCursor){ 
                TextView list_item_name = (TextView)paramView.findViewById(android.R.id.text1);
		list_item_name.setText(paramCursor.getString(paramCursor.getColumnIndex(setColumns.SET_NAME)));

		TextView list_item_time = (TextView)paramView.findViewById(android.R.id.text2); 
                             
                             paramView.setVisibility(paramView.GONE);}

Ответить