티스토리 뷰
오류발생!!!
Custom ListView 를 만들어서 데이타 타입별로 항목뷰를 다르게 생성하려 한다. 내가 사용하려는 뷰의 타입의 2가지(1또는 2)이다. 그래서 아래와 같이 코딩하였다.
MemoListAdapter extends BaseAdapter 에서
@Override public int getItemViewType(int position) { Log.i(TAG, "getItemViewType="+items.get(position).type); return items.get(position).type; } /** * getView가 생성하는 뷰의 개수, 3개 이상 넘지 않도록 한다, */ @Override public int getViewTypeCount() { return 2; }
그런데 다음과 같은 오류가 났다...아니 왜????
07-21 15:42:36.163: ERROR/AndroidRuntime(9839): java.lang.ArrayIndexOutOfBoundsException
문제해결 : getItemViewType() 과 getViewTypeCount()의 관계
별짓을 다 해보았으나 소용이 없었다...그러다가 다음과 같이 해보았다.
MemoListAdapter extends BaseAdapter 에서
@Override public int getItemViewType(int position) { Log.i(TAG, "getItemViewType="+items.get(position).type); return items.get(position).type; } /** * getView가 생성하는 뷰의 개수, 3개 이상 넘지 않도록 한다, */ @Override public int getViewTypeCount() { return 3; }
맙소사....getViewTypeCount() 값을 3으로 변경하니 제대로 동작하는 것이 아닌가?
즉슨 getItemViewType() 값이 0에서 getViewTypeCount()-1 값을 가져야 한다는 소리다...헐... 내가 선언했던 타입값은 1, 2로서 그냥 단순한 id값으로 생각했는데 getViewTypeCount() 범위안에 들어있어야 했던 것이다...휴...
댓글