(안드로이드) BaseAdapter

<BaseAdapter 클래스를 상속받는 어댑터 클래스가 필요한 상황>


어댑터 뷰와 관계되는 어댑터를 구현해야 하는 경우, BaseAdapter 클래스를 상속받는 어댑터 클래스를 구현하면 된다.
ArrayAdapter클래스 역시 BaseAdapter가 부모클래스이다. 전자보다 후자가 어댑터를 구현하기에 보다 자유롭다.


<오버라이드 해야 할 BaseAdapter클래스의 메소드들>


ArrayAdapter를 상속받는 어댑터 클래스를 구현할 때는 전자의 getView메소드를 오버라이드(Override)해야 한다.
BaseAdapter를 상속받는 경우는 그 외에 추가로 오버라이드 해야 할 메소드들이 있다.

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


<public int getCount()>
->자식 뷰들의 개수를 리턴하는 메소드이다. 여기서 자식 뷰는 어댑터 뷰의 자식 뷰임을 의미한다.

<public Object getItem(int position)>
->어댑터 뷰의 자식 뷰가 n개라면, 어댑터 객체가 갖는 항목의 개수 역시 n개이다. getItem메소드는 항목들 중 하나를 리턴하는 메소드이다.
여기서 항목은 자식 뷰의 내용을 갖고 있는 객체이다.
  • int position
           리턴할 항목의 위치를 의미한다.
           예를들어, position의 값이 2이면, 이 메소드는 2번쨰 항목을 리턴한다.


<public long getItemId(int position)>
이 메소드는 어댑터가 갖는 항목의 ID를 리턴한다.
단순한 어댑터를 구현하는 경우라면, 파라미터 position의 값을 그대로 리턴하는 것도 무방하다.


<public View getView(int position, View convertView, ViewGroup parent)>
자식 뷰들 중 하나를 리턴하는 메소드이다. convertView 파라미터의 값을 확인하여 그것이 생성되었는지 확인할 수 있다. 그 값이 null이면 , 자식 뷰를 생성해야 한다.

  • int position
         리턴할 자식 뷰의 위치를 의미한다.
  • View convertView
         이 메소드가 호출되는 시점에 position에 위치하는 자식 뷰를 의미한다.
         이 파라미터 값이 null이면, 자식 뷰가 생성되지 않는다. 이러한 경우 자식 뷰를 생성하는 코드를 작성해야 한다.
         이 파라미터 값이 null이 아니면, 자식 뷰는 이미 생성된 것이다. 이 경우 그것을 바로 리턴하는 것도 고려할 수 있다.

  • ViewGroup parent
리턴할 뷰의 부모 뷰를 의미한다. 즉, 자식뷰를 포함하는 어댑터 뷰이다.


댓글

이 블로그의 인기 게시물

(18장) WebSocekt과 STOMP를 사용하여 메시징하기

(네트워크)폴링방식 vs 롱 폴링방식

(ElasticSearch) 결과에서 순서 정렬