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

listview checkbox 에러가 발생합니다..

0 추천
else //한개 이상 존재
				
{
  AlertDialog.Builder alertbuilder = 
  new AlertDialog.Builder(studentInfo.this);
  alertbuilder.setMessage("삭제하시겠습니까?").setCancelable(false).
  setPositiveButton("확인", new DialogInterface.OnClickListener() 
  {
						
    @Override
    public void onClick(DialogInterface dialog, int which) 
    {
     // TODO Auto-generated method stub
     for(int i=arrList.size()-1; i>=0; i--)
     {
      test = (RelativeLayout) listView.getChildAt(i);
      check = (CheckBox) test.getChildAt(1);
      Log.e("체크확인", "test : "+check.isChecked());
      if(check.isChecked())
      {
	String delstr = arrList.get(i);
	String splittest[] = delstr.split("\t");
	delete_info(splittest[1].replaceAll("\\p{Space}", ""));
	arrList.remove(arrList.get(i));
       }
    }
    adapter.notifyDataSetChanged();
						

 

위와 같은 식으로 체크 된 항목을 list에서 삭제하고자 합니다.

어제 저녁까진 똑같은 소스로 잘 되었는데 오늘 재확인해보니, 에러가 발생합니다.ㅠㅠ

 

확인해보면 check = (CheckBox) test.getChildAt(1); <-여기서 에러가 난다는건데..

체크박스쪽은 건드리지도 않았고, 레이아웃만 바꿨는데 무슨 문제인지 모르겠습니다 ㅠㅠ

anci (19,950 포인트) 님이 2014년 4월 25일 질문
check = (CheckBox) test.getChildAt(1);
이 아니라
check = (CheckBox) test.getChildAt(i);
아닌가요

1개의 답변

0 추천
그 전에 test가 null인거죠.
저 283라인이 check = (CheckBox) test.getChildAt(1); 이게 맞다면요...
listView.getChildAt(i)를 했을 때 RelativeLayout이 나오는게 맞나요?
리스트에서 한 행을 삭제하는 방법이라면 코드가 잘못된 것 같은데요.
한 행을 삭제할거라면 데이터에서 해당 데이터를 날리고 어댑터의 notifyDataSetChanged()를 호출하는게 맞지 않나요?
Lifeclue (7,930 포인트) 님이 2014년 4월 25일 답변
답변 감사합니다. 일단 이전 소스를 메모해둔걸 확인했는데 check = (CheckBox) test.getChildAt(1);은 맞습니다. 오늘 제가 수정한건 java파일이 아니라 레이아웃만이었구요. 소스는 건드리지 않았는데 에러가 떠서 당황했습니다..위의 코드로 1개든 여러개든 삭제가 되었는데 널익셉션 에러가 나오네요;;
일단 listView.getChildAt(i); 에서 가져온 값이 null인 듯 하니
listView.getChildCount()부터 확인해 볼 필요가 있겠네요.
설명감사합니다.
test = (RelativeLayout) choiceList.getChildAt(i);
check = (CheckBox) test.getChildAt(1);
이 부분에서 test나 check 부분은 null값이 아니라 값이 들어오긴 합니다..그 밑의 Log.e("체크확인", "test : "+check.isChecked());도 되구요..오늘 밤새면서 고민 좀 해봐야겠네용ㅎㅎ
...