2011-02-22 10 views
2

私は他のオブジェクトの親または子になることができるオブジェクトを持っています。それはクライアントの代表です。このように見えるAndroid - ツリー構造でデータを表現してトラバースする最良の方法

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

Parentがnullの場合、最上位またはルートオブジェクトです。すべてのオブジェクトに子があるわけではありません。私たちは、サイトの下位レベルの数に制限を課すことはありません。私たちのアプリケーションは、ユーザーや他のデータがツリー内のどこにあるルートノードでも子ノードでも、特定のサイトに結びついているように設計されています。このため、正しいデータを取り戻すためにユーザーが作業しているサイトを知る必要があります。

私の質問は、このツリーをユーザーが通過できるようにするための最良の方法は何ですか?ノードがたくさんあるので、すべてを返すことは望ましくないでしょう。モデルオブジェクト内のすべての子を返すのではなく、代わりに、サイトに子がある場合のブール値を返すだけです。ユーザーがそのオプションをクリックすると、私の計画はそのノードの子ノードを取得し、選択のためにそれらを表示することでした。

ListViewは、ほとんどの設定メニューと同様の方法で、矢印が表示されている場合に表示されます。私もMenuを見ましたが、私はこれを行う最良の方法は不明です。

答えて

0

ツリーのトラバースは基本的に深さ優先または幅広い最初の検索になります。しかし、あなたのアプリの記述から、これは最善の方法ではないかもしれません。

あなたが説明したのと同様の構造で見たことの1つは、親(根まで)と現在の表示ノードの子をリストします。このツリーのトラバースをどのように使いたいかについてより多くの情報を提供すれば、私はさらにあなたを助けることができます。

さらに、上記の方法はループがない場合にのみ機能します。

関連する問題