data.go.kr 이용 해외 현지 연락처 보기

By | 2018-05-09
  1. data.go.kr에서 현지 연락처 등록
    1. 이름 : 현지 연락처
    2. 서비스 유형 : REST
    3. 분류 : 문화체육관광 > 관광
    4. 제공기관 : 외교부
  2. 새프로젝트 생성(소스코드 : googledrive/소스코드/WhanDataGoKr.zip)
    1. Target Android Devices : Phone and Table(API 15 이상 선택)
    2. Add and Activity to Mobile : Navigation Drawer Activity
  3. /layout/content_main.xml 수정

    1. TextView를 삭제하고 FrameLayout을 추가
    2. FrameLayout의 id를 container로 지정
    3. MainActivity.java : ft.replace(R.id.container, fragRegister);와 같이 ft.replace()에서사용
    4. layout_width : match_parent
    5. layout_height : match_parent
  4. /menu/activity_main_drawer.xml 수정
  5. Androidmanifest.xml 에 Internet 사용 허가 요청
  6. /values/strings.xml 에 국가 코드 추가
  7. /layout/frag_overseas.xml 생성
  8. FragOverseas.java 생성
  9. MainActivity.java의 onNavigationItemSelected() 메서드 수정
  10. MyConst.java에 data.go.kr에서 부여받은 DATA_KEY 등록
  11. FragOverseas.java 수정

    1. Uri.encode() : 파라미터로 한글 등을 보낼 때 URI 형식으로 변환
    2. <String, Integer, Document> : Document doInBackground(String)
      1. 첫번째 String : doInBackground()에서 받는 매개변수 타입
      2. 두번째 Integer : onProgressUpdate()에서 사용할 변수 타입
      3. 세번째 Document : doInBackground()의 리턴 타입
    3. onPreExecute() : 백그라운드 작업을 수행하기 전에 호출
    4. onProgressUpdate() :
      1. 백그라운드 작업의 진행 상태를 표시하기 위해 호출
      2. 작업 수행 중간 중간에 UI 객체에 접근하는 경우에 사용
      3. 작업 중간에 publishProgress()를 호출하면 실행 됨
    5. doInBackground() :
      1. 새로 만든 스레드에서 백그라운드 작업을 수행
      2. excute(인수1, 인수2,…)의 인수들을 배열로 전달받음
        1. new MyAsyncTask(getContext()).execute(strUrl);
        2. strUrl을 urls[0]로 받음
    6. onPostExecute()
      1. 백그라운드 작업이 끝난 후 호출
      2. 메인 스레드에서 실행되며 전송받은 내용을 레이아웃에 나타내거나 DB에 저장 등의 작업을 수행
  12. 전송된 XML을 onPostExecute()에서 파싱하여 화면 출력
    1. 전송된 XML
    2. onPostExecute() 처리

      1. NodeList nodeList = doc.getElementsByTagName(“contact”);
        1. XML에서 <contact>…</contact>를 찾아서 List로 읽어옮
        2. 위 그림에서는 <contact>…</contact>가 2개 있으므로 List에는 2개 저장됨
      2. data = nodeList.item(0).getTextContent().toString();
        1. List의 첫(0)번째의 Text를 읽어와서 문자열로 바꿔 data에 입력
  13. 또 다른 XML을 onPostExecute()에서 파싱하여 화면 출력 예
    1. 전송된 XML
    2. onPostExecute() 처리

      1. NodeList nodeList = doc.getElementsByTagName(“list”);
        1. XML에서 <list>…</list>를 찾아서 List로 읽어옮
        2. 위 그림에서는 <list>…</list>가 1개 있으므로 List에는 1개 저장됨
      2. Node node = nodeList.item(0).getFirstChild();
        1. List의 첫(0)번째의 첫번째 자식을 읽어서 node에 입력
      3. baseDate = node.getTextContent().toString();
        1. node의 Text를 읽어와서 문자열로 바꿔 data에 입력
      4. AtmDTO dto = new AtmDTO(i, baseDate, insArea, newAddr, oldAddr, operTime);
        1. 읽어들인 값들을 dto에 입력
      5. arList.add(dto);
        1. dto를 ArrayList에 추가
      6. AtmAdapter adapter = new AtmAdapter(getContext(), arList);
        m_listView.setAdapter(adapter);

        1. ListView에 연결