특별한딸기이야기

바인딩 본문

딸기 공부방/안드로이드

바인딩

특별한녀석 2008. 5. 3. 03:24

사용자 삽입 이미지


안드로이드에서 바인딩이란 무엇일까?

영어가 약하고 눈치로 안드로이드 어플리케이션을 개발 중인 나로써는 정확히 말하기 어렵다.

나는 혹시나 나처럼 초보 개발자에게 조금이나마 도움이 될까 해서 이렇게 글을 남겨본다.

바인딩이란 배열 비슷한 것이 아닌가 싶다.

마치 MFC에서 배열에 관련된 클래스를 제공하듯 함수를 제공하는 것이 아닐까...

그럼 안드로이드에서 배열이 아닌 바인딩을 꼭 써야만 하는 경우가 있을까?

그런 경우가 있다.

예를 들어 android.widget.Gallery를 사용하려면 반드시 바인딩이 필요하다.

기껏 Gallery g = new Gallery(this); 라는 문장을 넣었는데 이 속에 어떻게 그림을 넣을 것인가?

바인딩 밖에 없다.

그럼 바인딩은 어떻게 하는 것일까?

바인딩은 android.widget.AdapterView에서 파생된 클래스에서 한다.

나는 직접 AdapterView를 상속해 보았으나 실패...

이클립스에서 클래스가 아니라고 에러 메세지를 보낸다.

이렇게 저렇게 하다 public class Image_binder extends BaseAdapter 라고 입력하니 이제서야 통과다.

그런데 경고 메세지가 들어 온다.

개발자가 반드시 작성해야 하는 함수들이 구현이 안 되었다고 씨부렁 거리는 것 같다.

딸기는 영어가 약해서 대충 감으로 해석하기에 적절한 해석은 기대하지 마시길...

여튼 그 함수들을 살펴보면

public int getCount()
public Object getItem(int position)
public long getItemId(int position)
public View getView(int position, View convertView, ViewGroup parent)

이다

첫번째에서 세번째 함수는 프로그램 짜본 사람이면 쉽게 짐작 할 수 있는 함수들이니 굳이 설명을 하지 않겠다.

마지막 getView 함수는 아마도 갤러리를 실행 했을 때 보이는 각 각의 뷰를 어떻게 나타낼지 설정하는 것 같다.

android.widget.ImageView 변수를 만들어 적당히 개발자의 목적에 맞게 만들어 주자.

나 같은 경우 R.drawable에서 이미지를 불러와 보여주는 간단한 바인딩을 해 주었다.

자 그럼 이렇게 바인딩한 녀석을 갤러리에 넣어보자.

gallery.setAdapter(new Image_binder(this));

이런 식으로 바인딩한 녀석을 갤러리와 연결^^
(Gallery 변수 gallery다. 혹시 변수명과 클래스 명을 헷갈리지 않을까 걱정된다.)

자 그럼 슥슥 안드로이드 에뮬레이터를 실행시키면 갤러리가 뜨고 사용자가 작업한 바인딩이 뜰것이다.

만약 이 갤러리에서 선택한 녀석을 가지고 무엇인가 하고 싶다면

public class Maso_02 extends Activity implements AdapterView.OnItemSelectedListener

클래스 명 뒤에 implements를 구현하자

그리고 다음의 두개의 함수를 만들자

public void onItemSelected(AdapterView parent, View v, int position, long id)
public void onNothingSelected(AdapterView parent)

위 함수는 어떤 선택이 되었을때 실행하는 함수다.

개발자는 적당히 코드를 넣어 원하는 결과를 노려보자

두번째 함수는 구현하지 않아도 잘 돌아간다 ( --)>

그리고 gallery.setOnItemSelectedListener(this)

라고 설정해 주면 끝.

딸기도 아직 공부중이기에 이 글은 언제든 수정/추가 될 가능성이 있다.

좀더 상세한 코드를 통한 공부를 하고 싶은 사람은

구글 안드로이드 문서

http://code.google.com/android/samples/ApiDemos/src/com/google/android/samples/view/Gallery1.html 

참고하기 바란다