ListView를 간간히 자주 사용을 하게 되다보니 이런저런 문제점이 자주 발생하게 되는데요.이번에 발생된 문제점은 ListView를 한줄짜리가 아닌 내가 원하는 모양대로 구성하기 위하여 소위 Custom ListView를 만들려고 하다가 문제점이 발생하더군요.
기본적으로 ArrayAdapter를 상속받는 클래스를 만들어 getView(int, View, ViewGroup)를 오버라이딩 하여 구성하게 됩니다.
아래의 코드를 보면서 진행하겠습니다.
if(v == null){
LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.list_row_layout, null);
}
TextView t1 = (TextView)v.findViewById(R.id.row01);
TextView t2 = (TextView)v.findViewById(R.id.row02);
...................... 여타 기타 코드
그러다 보니 하위 코드에서 list_row_layout.xml 에서 작성하여 만든 View들이 모두 Null로 가끔 뜨더군요.
그리하여 찾다가 해결한 방법은 View 클래스를 따로 만들어 관리를 하니 해결이 되었습니다.
TextView t1;
TextView t2;
public MyRowView(Context context, MyBean bean){
LayoutInflater inflater = (LayoutInflater) context.getSystemService
(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.myinfo_all_row, this, true);
t1 = (TextView)v.findViewById(R.id.row01);
t2 = (TextView)v.findViewById(R.id.row02);
setData(bean);
}
public void setData(MyBean bean){
t1.setText(bean.getName());
t2.setText(bean.getPhone());
}
}
그후 getView안의 코드를 아래와 같이 수정해 줍니다.
public View getView(int position, View convertView, ViewGroup parent) {
MyRowView itemView;
if(convertView == null){
itemView = new MyRowView (context, items.get(position));
}else{
itemView = (MyRowView )convertView;
itemView.setData(items.get(position));
}
return itemView;
}
궁금하신건 댓글을 달아주세요.
글재주가 없어서 보시는 분들한테 너무 미안한 마음이 듭니다.
'프로그래밍 > 안드로이드' 카테고리의 다른 글
[안드로이드 팁] ScrollView 에 Gesture 이벤트를 달아보자 (1) | 2012.04.30 |
---|---|
[안드로이드] 안드로이드 - 컨텐트 프로바이더 (0) | 2012.04.30 |
[안드로이드/Android] 안드로이드 디버깅 (0) | 2012.04.30 |
[안드로이드/Android] 안드로이드 어플리케이션 구조 (0) | 2012.04.30 |
[안드로이드/Android] 안드로이드 개발환경 구축 (0) | 2012.04.30 |
[안드로이드/Android] 안드로이드 기본 개요 (0) | 2012.04.30 |
[안드로이드/Android] 안드로이드 인텐트 - 1 (0) | 2012.04.30 |
[안드로이드/Android] 안드로이드 액티비티(Activity) (0) | 2012.04.30 |
[안드로이드/Android] 안드로이드 Hello Android 작성 (0) | 2012.04.30 |