티스토리 뷰

오류발생!!!

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() 범위안에 들어있어야 했던 것이다...휴...

댓글