Модераторы: javastic
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как правильно реализовать многоуровневый список 
:(
    Опции темы
aRixx
Дата 2.9.2012, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 2.11.2007

Репутация: нет
Всего: нет



подскажите как правильно реализовать многоуровневый список. Думаю использовать ListView.  Допустим у меня есть таблица с полями 
id, название элемента, id_p - id родительского элемента
Мне кажется правильным вот такое решение:
Для начала вывожу в ListView названия элементов у которых id_p=0. Для этого создаю ArrayList, куда добавляю только записи у которых  id_p=0 и на его основе создаю SimpleAdapter. После щелчка по строке из ListView я очещаю свой ArrayList и формирую новый для выбранного  id_p. После этого вызываю notifyDataSetChanged() для SimpleAdapter.

С одной стороны вроде все просто, но мучают сомнения. Может быть есть более элегантное/правильное решение?
PM MAIL   Вверх
math64
Дата 3.9.2012, 08:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 1
Всего: 72



Есть ExpandableListView - это фактически дерево, но вроде, с одним уровнем вложенности.
Если же ExpandableListView не устраивает, лучше сделать нормальную модель для дерева:
Код

public class Tree {
  public class Node {
   String value;
   boolean expanded;
   List<Node> childs;
  }
  Node root;
}

+ адаптер который будет отображать узлы дерева
PM   Вверх
aRixx
Дата 3.9.2012, 08:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 2.11.2007

Репутация: нет
Всего: нет



Собственно вопрос как раз в том, как это сделать. Переформулирую, нужно ли переписывать метод getView и там как-то фильтровать отображаемые строки или нужно где-то вне, в обработчике щелчка по элементу списка организовать перезагрузку данных с которыми связан адаптер???
PM MAIL   Вверх
math64
Дата 3.9.2012, 09:47 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 1
Всего: 72



Если выделена модель, например, как предложил я - данные перегружать не надо, они все уже находятся в модели.
По щелчку мыши изменяется значение поля expanded узла дерева и вызывается notifyDataSetChanged().
TreeAdapter наследуешь от BaseAdapter.
PM   Вверх
aRixx
Дата 3.9.2012, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 2.11.2007

Репутация: нет
Всего: нет



Понял, спасибо. Попробую реализовать.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Android | Следующая тема »


 




[ Время генерации скрипта: 0.0904 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.