정말 미치겠네요. 이것 때문에 이틀을 허송세월로 보냈네요.
커스텀 리스트뷰 관련 문제인데요,
리스트뷰에서 아이탬을 클릭하면 체크가 되도록 하였고,
Array_Data.get(i).getIsChecked() 로 체크된 상태를 확인할 수 있도록 되어 있습니다.
주석에 표시된 문제의 블럭을 삭제하면 리스트뷰에서 체크된 수 만큼 로그가 찍히나,
살려두면 체크된 수의 절반만 로그가 찍히네요.
당연히 체크된 리스트의 절반만 삭제가 되고, 파일도 절반만 삭제가 되요.
도저히 뭐가 문제인지 몰라서 여기에 도움을 청합니다.
이런 에러는 제 상상력 밖이라서 ㅡ ㅡ;;
혹시 이런 유형의 문제를 해결할 팁이나 경험이라도 좋으니 좀 기술해주시면 좋겠습니다.
case R.id.menu_call_delete_selected_file:
if(SelectModeOn == true){
// ERROR : 다수의 파일을 선택했을 때 모두 한번에 지워지지 않는다.
for(int i = 0; i < Array_Data.size(); i++){
if(Array_Data.get(i).getIsChecked()){
Log.i("callActivity", "checked true : "
+ sdPath + Array_Data.get(i).getFullName());
// 조온나 희한한게 아래에 문제의 블럭 부분을 주석처리하면 바로 위에
// 로그는 Array_Data.get(i).getIsChecked()의 반환값으로 인해 리스트뷰에서 체크된 수 만큼
// 찍히는데, 문제의 블럭을 살려두면 체크된 수의 절반만 로그가 찍히고
// 절반만 삭제가 된다.
// 즉, 쉽게 말해서 Array_Data.get(i).getIsChecked()로 인한 반환값이 10이라고 가정할때,
// 아래의 문제블럭을 주석처리하면 위의 로그는 10개가 찍히나,
// 지금처럼 살려두면 5개만 찍히고 5개만 삭제가 된다.
// 참고용 데이터
// ArrayList<custom> Array_Data
// 문제의 블럭 시작
File beDelete = new File(sdPath + "/" + Array_Data.get(i).getFullName());
beDelete.delete();
delListItem(i); // 리스트뷰에서 아이템 제거 및 뷰 갱신 메소드
beDelete = null;
// 문제의 블럭 끝
}
}
}
return true;