2011-03-23 3 views
0

Android Application 내 서버 측 애플 리케이션도 나와 함께 개발 중이다. 이 app android 앱에서 서버의 일부 XML을 요청하고 파싱합니다. XML에는 앱에 표시 할 탭의 수를 나타내는 정보가 포함되어 있으며 각 탭에는 ListView이 있고 각 목록 항목은 다른 Activity으로 이동할 수 있습니다. ListView이 레벨은 무한합니다. 서버에서 생성하는 XML은이 유형입니다. 내 내 안드로이드 런타임에 3 개의 탭을 생성하지만, 코드의 유형을 안내하시기 바랍니다 수있는 결과 안드로이드에서 XML로부터리스트/서브리스트의 무한/무한 레벨을 파싱하고 생성하기

<Application> 
    <Tabs> 
     <Tab id="1" tabtitle="Info"> 
       <ListItems> 
        <ListItem id="1" itemtype="list" itemtitle="1.1" itemdata="Issue1,Issue2,Issue3,Issue4,Issue 5"> 
        </ListItem> 
        <ListItem id="3" itemtype="list" itemtitle="1.2" itemdata="News Links"> 
        </ListItem> 
        <ListItem id="5" itemtype="list" itemtitle="1.3" itemdata="sampleDataURL type"> 
         <ListItems> 
          <ListItem id="1" itemtype="list" itemtitle="1.3.1" itemdata="some data"> 
           </ListItem> 
           <ListItem id="3" itemtype="list" itemtitle="1.3.2" itemdata="some data"> 
            <ListItems> 
             <ListItem id="1" itemtype="list" itemtitle="1.3.2.1" itemdata="Issue1,Issue2,Issue3,Issue4,Issue 5"> 
              </ListItem> 
              <ListItem id="3" itemtype="list" itemtitle="1.3.2.2" itemdata="News Links"> 
              </ListItem> 
            </ListItems> 
           </ListItem> 
          </ListItems> 
         </ListItem> 
        </ListItems> 
      </Tab> 
      <Tab id="2" tabtitle="More"> 
        <ListItems> 
        </ListItems> 
       </Tab> 
       <Tab id="3" tabtitle="Share"> 
        <ListItems> 
        </ListItems> 
       </Tab> 
     </Tabs> 
</Application> 

은/로직 나는 SAXParser 그리고 모델 데이터의 종류 내가 파서를 통해 안드로이드 앱으로 채워야 작성 구성해야합니다. ArrayList<CustomClass> 대신 HashMap으로 가야합니까?

효율적이고 견고하게 구현하기가 어렵습니다.

+0

무한한 목록을 구문 분석 할 때 실제로 기억이나 시간이 있습니까? –

+0

안녕하세요 남자 목록은 실질적으로 4-5 단계를 넘어서는 것이 아니지만 코드를 작성할 때 목록의 길이를 알 수 없습니다 – Abhi

+0

"ViewAnimator + 탭보기"를 사용하여 탭 기반 디자인을 제어 할 수 있습니다. 이렇게하면 3 개의 탭으로 구성된 3 가지 활동을 만들어야합니다. 각 액티비티에서 가장 바깥 쪽 레이아웃으로 ViewAnimator를 사용하고 요구 사항에 따라리스트 뷰를 추가하십시오. 데이터 구조의 경우 hashmap 또는 arrayList .. 중 하나를 사용할 수 있지만 결국 결국 얼마나 효율적으로 사용하는지에 따라 달라집니다. 이 도움이 될 수 있습니다 .. – mudit

답변

1

나는 새로운 태그를 XML에 도입함으로써이를 수행했다. 즉, 탭 아래에있는 ListItems의 모든 목록 항목에있는 parentId. 부모 ID는 해당 ID의 b이고 다른 하위 목록 항목의 경우에는 parentId가 부모리스트 항목의 id.

나는 모든 목록을 하나의 배열 목록에 저장하고 다른 목록에있는 모든 항목을 저장합니다. 모든 활동마다 임시 작업 목록을 작성합니다. 항목 목록에서 항목을 제외 할 수 있습니다. 부모의 아이디와 아이의 parentId를 비교하는 것.

+0

xml을 구문 분석하는 코드와 LView 및 하위 목록에 XML을 추가하는 방법을 공유해주십시오. – AAnkit

1

탭에 항목을 표시한다는 사실은 XML의 일부일 필요는 없습니다. 한 항목에 다른 항목을 포함시킬 수도 있습니다.

<Application> 
    <Items id="1" title="Info"> 
     <Item id="1" type="list" title="1.1" data="Issue1,Issue2,Issue3,Issue4,Issue 5" /> 
     <Item id="3" type="list" title="1.2" data="News Links" /> 
     <Item id="5" type="list" title="1.3" data="sampleDataURL type"> 
      <Item id="1" type="list" title="1.3.1" data="some data" /> 
      <Item id="3" type="list" title="1.3.2" data="some data"> 
       <Item id="1" type="list" title="1.3.2.1" data="Issue1,Issue2,Issue3,Issue4,Issue 5" /> 
       <Item id="3" type="list" title="1.3.2.2" data="News Links" /> 
      </Item> 
     </Item> 
    </Items> 
    <Items id="2" title="More"> 
    </Items> 
    <Items id="3" title="Share"> 
    </Items> 
</Application> 

...

public ArrayList<Item> mSubItems = new ArrayList<Item>(); 

이 구조 사용 여부, 로컬 항목에 대한 사용자 정의 POJO 항목 클래스를 사용하여 유사한 구조를 만들 수 있으며, 각 항목과 같은 필드를 포함해야 .. 하위 항목을 저장합니다. SAX 구문 분석 중에 이러한 개체를 만듭니다.

활동에서 활동으로 항목을 전달하려면 커스텀 항목 클래스 대신 직접 Bundle 객체를 사용하는 것이 더 쉽습니다.

관련 문제