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

리스트뷰로 웹에있는 데이터 가져와서 뿌려줄때 죽습니다.

0 추천
안녕하세요.

도저히 미궁에 빠져서 헤어나올수가 없네요.

다름이 아니라 리스트뷰에 웹에있는 JSON데이터를 파싱해와서 뿌려주고 있습니다.

그런데 최초 리스트뷰에 데이터가 10개 보여지고 맨 아래로 스크롤하면 맨끝에서 다시 또 파싱해와서 10개를 현재 데이터를 저장하고 있는 ArrayList에 다시 넣고 현재 어댑터를 노티피체인지 시켜서 갱신시키는 방법으로 구현을 하였습니다.

그런데 다름이 아니라 간헐적으로 네트워크상태에 따라 그런지 모르겠는데...

다음 데이터 받아와서 재갱신하고 뿌리는 부분에서 죽습니다.

이게 일정한 패턴이 있는건 아니고 랜덤적으로 그러는데요..

그래서 디버깅모드로 체크해가면서 보니까 가끔 ArrayList에 들어가는 JSON데이터를 저장하는 클래스 객체가 데이터가 다 세팅된 올바른 객체가 있는게 아니고  NULL 객체가 열개가까이 들어가있네요ㅡㅡ...

추측은 네트워크 환경때문에 JSON파싱쪽에서 Exception이 발생하여 객체에 값을 세팅하지 못해 널값이 들어갔다고 생각이 드는데 맞는지 아닌지 모르겠네요..

아...이런 현상 겪어보신 분 계시나요?
갸아악 (21,260 포인트) 님이 2013년 12월 3일 질문
받아온 값이 NULL 일 경우 따로 처리를 해 주는게 어떨까요?

1개의 답변

+1 추천
 
채택된 답변

전달값에 따라서 JSON데이터가 유동적으로 변하는 작업이라면 

예외처리 구간을 조절해야하지 않을까 싶네요.

예를 들어 광고 데이터를 JSONArray로 받는경우

for(int i=0; i < JSONArray.length();i++){
	try{
		JSONObject jsonTarget = JSONArray.getJSONObject(i);
		//데이터 처리 부분
	}catch (JSONException e) {
		// TODO: handle exception
		Log.e(Tag, i + "번 광고 노출중 예외발생, 노출 스킵");
	}
}

이렇게 해당 인덱스만 노출안되도록 처리하면 어플 죽는 일은 없을것같습니다.

 

무조건 NULL이 들어가는 일이없어야한다면 통신하는 웹페이지쪽에서 예외처리를 해야겠죠.

얼룩돼지 (15,720 포인트) 님이 2013년 12월 4일 답변
갸아악님이 2013년 12월 4일 채택됨
...