네이버 API를 연동한 안드로이드 개발 part.1 ~2

네이버 API를 연동한 안드로이드 개발 part.1

| 안드로이드 개발

2010/11/03 22:41

지난 스터디에서 종합 프로젝트로 만들었던
네이버 API를 연동한 안드로이드 앱…
Java라는 언어는 누구나 알고 있지만…(전 제외-_-)
안드로이드가 워낙 생소하고 복잡한 개념이지만,
필요한 항목들을 step by step 으로 하나씩 공부하면서 만들어가면 그리 어려워 보이지는 않는다…
ListView + Adapter + XmlPullParser + DialLog + Activity 종합 선물 셋트라 생각하면 되겠다.
우선 만들려는 영화검색 View들은 아래와 같다.
간략히 소개하자면, 메인액티비티에서 받아온 검색 키를 네이버 API 통해 파싱한다.
파싱한 데이터들을 저장하고, 다시 이 데이터들을 ListView, Dialog 그리고 액티비티 화면전환을 통해 뿌린다.

우선 API라는게 무엇인지 알아보자.
수많은 포탈들이 오픈 API를 제공하고 있다.
이 중 영화관련 API를 검색, 뿌리는 어플을 만들고자 한다.
네이버 개발자 센터 사이트로 가서
http://dev.naver.com/openapi/apis/data/movie

어떤 키값형태로 정의하고 있는지 훑어 본다.
이중 URL과 필드명을 유심히 보자.

회원가입 하지 않았다면, 가입해서 key 값을 받아온다.
대충 훑어 봤으면, 어떻게 Xml의 키값을 구해와서, 구현 할것인지 고민해본다.
무수한 방법들이 있지만, 그 중 가장 심플한것 은 xml의 데이터를 얻어와서, 배열에 담고,
그 배열을 ListView에 뿌린다.
그리고 ListView에 접목시킬 CustomAdapter를 하나 만드는 것이다.

초기 스터디 진행할때 이책 위주로 했었는데, 최근 나온 책중에서는 개념적으로 잘 정리 되어 있는 듯하다.
안드로이드에 처음 접하려는 사람은 김상형씨가 쓴 이 책이 적당한거 같다.
응용할만한 소스는 극미하나… step by step 20번정도 정독하면 감이 올거라 생각한다.
참고로, 이 책쓴 저자와는 본인은 아무 관계도 아님;
우선 xml의 출력 필드에서 담아올 변수들(이미지링크, 영화제목, 감독, 제작년도, 배우, 영문제목…)변수를 만든다.

참고로 movie_rating은 영화순위를 가져올 변수이다…네이버에서 제공되는 XML 필드값과 자료형이 일치해야한다.
다른 자료형으로 할사람은 시도 해봐도 좋을듯…뻑나기 쉬운 코드중 하나.
mainActivity에 띄울 View들을 Xml로 만든다.
상단 Top 부분과 Main Activity를 따로 구현하여 만들것이다.
Top Activity의 Xml을 따로 정의하여, Main Activity에서 보여줄 Xml에서 Include 시킨다.
Activity 클래스 파일을 따로 구현함으로서, 재사용성과 수정이 한결 쉬워진다.
Top 부분에 right, left 아이콘을 두어서 onBackPressed() 일을 할것이다.

에뮬레이터 상단에 기본적으로 뜨는 타이틀 바는 매니페스트 파일에서 수정함으로서 안보이게 한다.

만약, 풀스크린으로 보여주고 싶다면, .Fullscreen 옵션을 추가하면 된다.

top 클래스를 하나 만들고 init()메소드안에 left, right 아이콘 정의하고,
상단 타이틀은 Activity가 바뀔때마다 타이틀도 바껴야 하므로, 현재 액티비티에서 Title을 얻어 오면 되겠다.

만약 오른쪽 버튼을 안보여주고 싶다면, View.INVISIBLE로 선언하면 되겠지…

액티비티 마다 Title을 어떻게 얻어 오냐면, 미리 string.xml에 item들을 정의한다.

그리고 매니페스트로 가서 액티비티 마다 label을 설정해준다.

top 클래스 코딩이 다 끝났으면, Main Activity로 가서 코딩한다.

유심히 볼것은 Bundle과 Intent이다.

처음엔 감잡기 어려워도 자주 보면 익숙해 질것이다.

원활한 파싱을 위해 parser 클래스를 하나 만든다.
parser 클래스 내부에서 안드로이드가 제공하는 XmlPullParser라는 API가 해당 API URL을 파싱하여
필드값을 가져 올것이다.

그리고 이값들은 다시 XmlData 변수에 저장된다.

여기서 유심히 볼만한것은 equals() 메소드 이다.
이놈은 객체를 서로 비교하는 역할을 하고 있는 것 같다. 잘모르면 레퍼런스 참고하도록,

어느정도 parser클래스 코딩이 끝났으면,
ListView에 붙여줄 Adapter 클래스 를 하나 만든다.

사용자 정의 어댑터니까, 당연히 CustomAdapter 이겠지…
여기서 주목할만 한것은 mContext 이다.

context는 어떠한 기능을 실행하려 할때 그 전 상태를 체킹할 수 가 있다.

이것을 간과 하고 넘어가면 다 만들어놓고 뻑나는 경우를 접할 수 가 있다.
모든 경험이 최고, 하루정도 고민하면 된다.

아래로 내려와 Xml로 정의된 View들을 하나씩 가져다 붙이면 된다.
그리고 그 내용들은 xmlData로 부터 채워진다.

여기서 고민해볼것은 API에서 제공되는 Img는 String인데, 어떻게 View에서 표현한다는 것이냐 이다.
그리고 Xml을 불러오다가 URL이 깨졌을때 try/ catch 문을 어떻게 구현 할것인지 고민해볼 필요가 있다.

당신이라면 과연, catch뒤에 무슨 코드를 넣겠는가?

Posted by Ludwig Van –

Activity, ListView, XML파서, 네이버API, 네이버API안드로이드개발, 네이버API연동, 네이버영화API, 안드로이드, 안드로이드개발, 안드로이드앱

http://blogit.blogkorea.net/37542876/http://stbaeya.com/tc/189

 

네이버 API를 연동한 안드로이드 개발 part.2

| 안드로이드 개발

2010/11/03 23:23

이제 만들어놓은 parser클래스와 Custom어댑터를 붙일 클래스를 하나 만들어서,
아래 이미지처럼 보여주도록 한다.

top 액티비티와 리스트를 뿌릴 Activity가 별개로 구현된것을 확인 할 수 있다.

xml로 얻어온 필드값을 리스트뷰로 뿌리고, 해당 리스트를 클릭하면, Diallog(대화상자)로 띄울것이다.

준비한 어댑터를 리스트뷰에 붙인다.

xml로 받아온 필드들을 String 배열로 담는다.
여기서 볼만한것은 평점 자료형을 Float형으로 형변환 했다는 점이다.

DB나 XML에서는 가져온 데이터를 걍 뿌리기는 불가능하도록 배열을 이용해서 잠시 저장할 수 있다.

다시 리스트를 클릭했을때 이벤트 코드를 작성하고,
DialLog를 따로 띄우기 위해 xml의 필드값을 담은 String배열과 현재 리스트의 position을 매개변수로 하는noticeInfo() 메소드를 하나 만들었다.

메소드 내부에서는 각 view마다 xml필드값을 뿌려지게 되고,
RatingBar를 (별모양처럼 생긴 View) 어떻게 구현할것인지 고민해볼만 하다.

setRating()으로 float 자료형을 받아 오는건 알겠는데…
어떻게 해야 네이버에서 제공하는 평점에 맞게 별숫자가 변하게 될까?

기본적인 산수식으로 접근해보자.

모든 View들을 정리하고, 다이얼로그의 버튼까지 추가한다.
버튼 하나는 다른 액티비티로 전환, 또다른 버튼은 취소 임무를 수행할것이다.

안드로이드에서 제공되는 대화상자 모양이 맘에 안든다면, Custom으로 xml을 만들어서
Diallog 로부터 setContentView 시키면 된다.

아니면 inflate 시키던가, 방법은 다양하게 있다.

우선 Dialog 부분 코드가 너무 지저분 하니, 외부 클래스로 빼보자.
뻑나는건 당연하다. 쫄지말고 하나씩 천천히 필요한 항목들을 추가하면 된다.

우선 다음 Activity로 전환하려면, 현재 Activity를 알아야 하고,
Dialog는 현재의 Context를 필요로 하기 때문에 커스텀 Adapter로 받은 context를 활용한다.

이렇게, 곰곰히 필요한것이 무엇인지 고민해보고 접근하는게 좋다.

이전 Dialog 코드와 동일하며, 버튼에 대한 이벤트만 추가 시켜준다.

하나는 다른 Acitivity 전환, 또다른 하나는 창닫기 기능이다.
dialog의 창닫기는 cancle()과 dimiss() 두가지가 있는데, 한번씩 써본다.

Dialog 클래스 코드를 마무리 짓고,

이제, 전환시킬 또다른 Activity 클래스를 하나 만들고,
Dialog로 전달했던 것처럼, 방법은 intent와 bundle을 이용하여 키값을 받아와서 뿌리면 코딩은 끝난다.

아래 액티비티처럼 보여진다면, 성공한것이다.

취미로 하는 안드로이드 지만, 코딩할때마다 느끼는 점은 API가 너무나 잘 되어 있다는점…
즉, 필요한 기능들은 대부분 API들로 구현이 되어 있어 민간인 입장에서도 쉽게 접근, 개발이 가능한듯 하다.
이말은 시대가 발전할수록 개발하기 쉬운 환경이 다가오고,
좋은 아이디어 하나로 쇼부를 보는 세상이 온다는것이 아닐까 싶다.

Posted by Ludwig Van –

Activity, ListView, XMLparser, 네이버API, 안드로이드, 안드로이드개발, 안드로이드앱, 안드로이드어플

http://blogit.blogkorea.net/37542875/http://stbaeya.com/tc/190

This entry was posted in Uncategorized. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s