2011-02-22 2 views
2

다른 개체의 부모 또는 자식이 될 수있는 개체가 있습니다. 그것은 클라이언트의 대표입니다. Parent는 상위 수준 또는 루트 객체 인 null의 경우는이Android - 트리 구조에서 데이터를 표현하고 트래버스하는 가장 좋은 방법

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

것 같습니다. 모든 물체에 어린이가있는 것은 아닙니다. 사이트가 얼마나 많은 수준으로 내려갈 수 있는지에 대한 제한을 두지 않습니다. 우리의 응용 프로그램은 사용자 및 기타 데이터가 트리의 어디에서나 루트 또는 자식 노드이든 관계없이 특정 사이트에 연결되도록 설계되었습니다. 이런 이유로 나는 사용자가 정확한 자료를 철회하기 위하여 일하고있는 위치를 알아야한다.

내 질문은 사용자가이 트리를 통과하도록 허용하는 가장 좋은 방법은 무엇입니까? 많은 노드가 있으므로 모든 것을 반환하는 것이 바람직하지 않습니다. 이제는 모델 객체에있는 모든 자식을 반환하는 대신 사이트에 자식이있는 경우 단순히 부울 값을 반환하는 것입니다. 그런 다음 사용자가 해당 옵션을 클릭하면 해당 노드의 하위 노드를 가져와 선택을 표시하는 계획을 세웠습니다.

ListView은 비슷한 옵션으로 표시되는 화살표가있는 대부분의 설정 메뉴와 비슷한 방식으로 사용하려고 생각했습니다. 나는 또한 Menu을 보았지만이 작업을 수행하는 가장 좋은 방법은 확실치 않습니다.

답변

0

나무의 순회는 기본적으로 깊이 우선 또는 폭 넓은 첫 번째 검색까지 내려갑니다. 그러나 당신이 당신의 앱을 묘사 한 것에서 이것은 최선의 접근 방식이 아닐 수도 있습니다.

당신이 묘사 한 것과 비슷한 구조에 대해 내가 본 한 가지는 부모 (루트까지)와 현재보기 노드의 하위를 나열합니다. 이 트리의 탐색을 사용하는 방법에 대한 자세한 정보를 제공하면 추가로 도움을 줄 수 있습니다.

위의 방법은 루프가없는 경우에만 작동합니다.