(안드로이드) 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
이 파라미터 값이 null이면, 자식 뷰가 생성되지 않는다. 이러한 경우 자식 뷰를 생성하는 코드를 작성해야 한다.
이 파라미터 값이 null이 아니면, 자식 뷰는 이미 생성된 것이다. 이 경우 그것을 바로 리턴하는 것도 고려할 수 있다.
- ViewGroup parent
댓글
댓글 쓰기