마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

슬라이딩 left 메뉴를 동적으로 구현

0 추천
안녕하세요. 현재 앱의 메뉴부분은 다 하드코딩으로 해놓았습니다만..

이걸 메뉴 테이블에서 데이터를 받아와(json으로) 처리해야 하는데요..

어느부분까지 동적으로 선언해야 되는지 감이 안잡혀서 질문 드립니다..

우선 기본 컨셉은 웹페이지에서 메뉴를 등록,수정,삭제 시킬 수 있으며 대메뉴는 9개까지 생성 가능하고

중메뉴, 소메뉴..기타 하위 메뉴는 제한이 없도록 하였습니다.

ArrayList<HashMap<String, String>> result100List = new ArrayList<HashMap<String, String>>();

이런식으로 result900List까지 선언해놓고..

      // 메뉴 값
      HashMap<String, String> resultItem = new HashMap<String, String>();
      resultItem.put("moblPrgId", moblPrgId);
      resultItem.put("moblPrgNm", moblPrgNm);
      resultItem.put("scrnNm", scrnNm);
      resultItem.put("scrnExpl", scrnExpl);
      resultItem.put("useYn", useYn);

      // 대메뉴 구분
      if(Integer.parseInt(chkOne) >= 100 && Integer.parseInt(chkOne) < 200) {
       
       result100List.add(resultItem);
       
      } eise if(Integer.parseInt(chkOne) >= 200 && Integer.parseInt(chkOne) < 300) {

       result200List.add(resultItem);

      } ....

이런식으로 for문 돌린 값을 비교하여 선언한 리스트에 해시맵을 담았습니다..

각각 선언한 리스트를 다시 해시맵을 만들어서 값을 가져와야 되는데

이때 대메뉴는 문제 없지만 그 하위메뉴 가져오는데에서 어떻게 처리해줘야 되는지를 모르겠습니다..

  HashMap<String, String> hash1 = (HashMap<String, String>)result100List.get(0);
  HashMap<String, String> hash2 = (HashMap<String, String>)result200List.get(0);
   .... 3~9

이런식으로 대메뉴의 처음 해시맵을 받아와

  String hashNm1 = hash1.get("scrnNm");
  String hashNm2 = hash2.get("scrnNm");

 ...3~9

이렇게 대메뉴 값을 받아오는데 이게 뭐하는가 생각이드네요.......

대메뉴값 카운팅은 가능해서

  HashMap<String, String> topMenu = new HashMap<String, String>();
    
  for (int i = 0; i < menuCount; i++){
   
   topMenu.put("topMenu" + i, "??");
   
  }

이런식으로 topMenu+i 동적으로 만들순있는데 그 뒤도 참 애매합니다..

질문이 제가 봐도 이상해서 죄송합니다..

간단하게 설명드리자면 josn형식의 메뉴를 동적으로 구현해야 합니다.

json트리 구조는

[{"1":"1", "2":"1", "3":"1"}, {"1":"2", "2":"2", "3":"2"}, {"1":"3", "2":"3", "3":"3"}]

어떤식으로 구현해야 되는지 방향좀 알려주시면 감사감사하겠습니다............
동그랑때앵 (320 포인트) 님이 2016년 7월 13일 질문
간단하게 하려면 재귀호출을 이용해 보세요. 예를 들면 어떤 디렉토리 안에 있는 파일 리스트를 가져올 때 디렉토리 안에 디렉토리나 파일이 존재하기 때문에 디렉토리의 경우는 다시 검색을 다시하도록 구현해야 합니다.

public class MenuItem {
      
     public String title;

     public class MenuItem subItem;
}


public void drawMenu(MenuItem item) {
     
    //Set menu title here

    if (item.subItem != null) {
         drawMenu(item.subItem);
    }
}

public void drawMenus() {
      
    ArrayList<MenuItem> menuItems = getMenu();
    for (MenuItem item : menuItems) {
           drawMenu(item);
    }
}

//메뉴 그리기 호출
drawMenus();

코드가 정확하지는 않지만 기본 아이디어는 이해하실 수 있을 거라고 생각합니다. 위와 같은 구조로 구현해 보세요.

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...