마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

SimpleCursorAdapter 에서 nullpointerExeption error 좀 봐주세요ㅜ

0 추천

핸드폰으로 실행할 경우엔 잘 되는데 에뮬레이터에서 실행할 경우 화면이 뜨지도 않고 중단이 됩니다.

원래 잘 되다가 코드를 추가한 어느 순간부터 이러한 에러가 떴습니다.

에러내용과 에러 나는 부분 첨부합니다.

05-07 09:11:07.394: E/AndroidRuntime(763): java.lang.NullPointerException
05-07 09:11:07.394: E/AndroidRuntime(763):  at com.crucialsoft.softCalendar.schduleList.SchduleListAdapter.isNewGroup(SchduleListAdapter.java:98)
05-07 09:11:07.394: E/AndroidRuntime(763):  at com.crucialsoft.softCalendar.schduleList.SchduleListAdapter.bindView(SchduleListAdapter.java:74)
05-07 09:11:07.394: E/AndroidRuntime(763):  at android.widget.CursorAdapter.getView(CursorAdapter.java:250)
05-07 09:11:07.394: E/AndroidRuntime(763):  at android.widget.AbsListView.obtainView(AbsListView.java:2012)
05-07 09:11:07.394: E/AndroidRuntime(763):  at android.widget.ListView.measureHeightOfChildren(ListView.java:1244)
05-07 09:11:07.394: E/AndroidRuntime(763):  at android.widget.ListView.onMeasure(ListView.java:1155)
05-07 09:11:07.394: E/AndroidRuntime(763):  at android.view.View.measure(View.java:12603)
05-07 09:11:07.394: E/AndroidRuntime(763):  at android.widget.RelativeLayout.measureChild(RelativeLayout.java:579)
05-07 09:11:07.394: E/AndroidRuntime(763):  at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:392)
05-07 09:11:07.394: E/AndroidRuntime(763):  at android.view.View.measure(View.java:12603)
05-07 09:11:07.394: E/AndroidRuntime(763):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4677)
05-07 09:11:07.394: E/AndroidRuntime(763):  at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1369)
05-07 09:11:07.394: E/AndroidRuntime(763):  at android.widget.LinearLayout.measureVertical(LinearLayout.java:660)
05-07 09:11:07.394: E/AndroidRuntime(763):  at android.widget.LinearLayout.onMeasure(LinearLayout.java:553)
05-07 09:11:07.394: E/AndroidRuntime(763):  at android.view.View.measure(View.java:12603)
05-07 09:11:07.394: E/AndroidRuntime(763):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4677)
05-07 09:11:07.394: E/AndroidRuntime(763):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
05-07 09:11:07.394: E/AndroidRuntime(763):  at android.view.View.measure(View.java:12603)
05-07 09:11:07.394: E/AndroidRuntime(763):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4677)
05-07 09:11:07.394: E/AndroidRuntime(763):  at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1369)
05-07 09:11:07.394: E/AndroidRuntime(763):  at android.widget.LinearLayout.measureVertical(LinearLayout.java:660)
05-07 09:11:07.394: E/AndroidRuntime(763):  at android.widget.LinearLayout.onMeasure(LinearLayout.java:553)
05-07 09:11:07.394: E/AndroidRuntime(763):  at android.view.View.measure(View.java:12603)
05-07 09:11:07.394: E/AndroidRuntime(763):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4677)
05-07 09:11:07.394: E/AndroidRuntime(763):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
05-07 09:11:07.394: E/AndroidRuntime(763):  at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2072)
05-07 09:11:07.394: E/AndroidRuntime(763):  at android.view.View.measure(View.java:12603)

 

 
private boolean isNewGroup(Cursor cursor, int position)
	{
		String curDate = cursor.getString(cursor.getColumnIndex(InterfaceDB.KEY_START_DATE));
		cursor.moveToPosition(position - 1);
		String preDate = cursor.getString(cursor.getColumnIndex(InterfaceDB.KEY_START_DATE));
		cursor.moveToPosition(position);

		if (!curDate.equals(preDate))
		{
			return true;
		}
		return false;
	}
@Override
	public void bindView(View view, Context context, Cursor cursor) {
		ViewHolder viewHolder = (ViewHolder) view.getTag();

		if (cursor == null){
			String item = "일정이 없습니다.";
			viewHolder.mTextview1.setText(item);

			return;
		}
		
		String item = cursor.getString(cursor.getColumnIndex(InterfaceDB.KEY_EvnName));
		String header = cursor.getString(cursor.getColumnIndex(InterfaceDB.KEY_START_DATE));

		int viewType;
		LinearLayout llHeader = (LinearLayout)view.findViewById(R.id.day_Header);
		int position = cursor.getPosition();

		if (position == 0)
		{
			viewType = VIEW_TYPE_GROUP_START;
		}
		else
		{
			boolean newGroup = isNewGroup(cursor, position);

			if (newGroup)
				viewType = VIEW_TYPE_GROUP_START;
			else
				viewType = VIEW_TYPE_GROUP_CONT;
		}
		
		if (viewType == VIEW_TYPE_GROUP_START)
			llHeader.setVisibility(View.VISIBLE); // Visiable
		else
			llHeader.setVisibility(View.GONE); // Gone	

		viewHolder.mTextview1.setText(item);
		viewHolder.mTextview2.setText(header);
	}

빨간색 부분이 에러 내용입니다.

 

 

 

이죠 (420 포인트) 님이 2013년 5월 7일 질문
이죠님이 2013년 5월 7일 수정

1개의 답변

0 추천

preDate가 null 값인가본데요..

cursor.moveToPosition(position - 1);

후에 값이 있는지 살펴 보셔야 할듯 하네요..

노예의집 (23,370 포인트) 님이 2013년 5월 7일 답변
...