Android - лучший способ представления и прохождения данных в древовидной структуре - PullRequest
2 голосов
/ 22 февраля 2011

У меня есть объект, который может быть родительским или дочерним для других объектов.Это представитель клиента.Это выглядит так:

public class Site
{
    public int SiteId;
    public List<Site> Children;
    public Site Parent;
}

Когда Parent равно нулю, это верхний уровень или корневой объект.Не у всех объектов есть дети.Мы не налагаем никаких ограничений на то, сколько уровней может пройти сайт.Наше приложение разработано таким образом, что пользователи и другие данные привязаны к определенному сайту, будь то корневой или дочерний узел в любом месте дерева.По этой причине я должен знать сайт, с которым работает пользователь, чтобы получить правильные данные.

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

Я думал об использовании ListView вАналогично большинству меню настроек со стрелкой, если они являются опциями.Я также посмотрел на Menu, но я просто не уверен, что лучший способ сделать это.

1 Ответ

0 голосов
/ 02 июня 2014

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

Одна вещь, которую я видел для структур, похожих на те, что вы описали, перечислит родителей (вплоть до корня) и потомков текущего узла просмотра. Если вы предоставите больше информации о том, как вы хотите использовать обход этого дерева, я мог бы попытаться помочь вам в дальнейшем.

Кроме того, вышеупомянутый подход работает, только если их нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...