![]() |
Модераторы: javastic |
![]() ![]() ![]() |
|
aRixx |
|
|||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 2.11.2007 Репутация: нет Всего: нет |
подскажите как правильно реализовать многоуровневый список. Думаю использовать ListView. Допустим у меня есть таблица с полями
id, название элемента, id_p - id родительского элемента Мне кажется правильным вот такое решение: Для начала вывожу в ListView названия элементов у которых id_p=0. Для этого создаю ArrayList, куда добавляю только записи у которых id_p=0 и на его основе создаю SimpleAdapter. После щелчка по строке из ListView я очещаю свой ArrayList и формирую новый для выбранного id_p. После этого вызываю notifyDataSetChanged() для SimpleAdapter. С одной стороны вроде все просто, но мучают сомнения. Может быть есть более элегантное/правильное решение? |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 1 Всего: 72 |
Есть ExpandableListView - это фактически дерево, но вроде, с одним уровнем вложенности.
Если же ExpandableListView не устраивает, лучше сделать нормальную модель для дерева:
+ адаптер который будет отображать узлы дерева |
|||
|
||||
aRixx |
|
|||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 2.11.2007 Репутация: нет Всего: нет |
Собственно вопрос как раз в том, как это сделать. Переформулирую, нужно ли переписывать метод getView и там как-то фильтровать отображаемые строки или нужно где-то вне, в обработчике щелчка по элементу списка организовать перезагрузку данных с которыми связан адаптер???
|
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 1 Всего: 72 |
Если выделена модель, например, как предложил я - данные перегружать не надо, они все уже находятся в модели.
По щелчку мыши изменяется значение поля expanded узла дерева и вызывается notifyDataSetChanged(). TreeAdapter наследуешь от BaseAdapter. |
|||
|
||||
aRixx |
|
|||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 2.11.2007 Репутация: нет Всего: нет |
Понял, спасибо. Попробую реализовать.
|
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Android | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |