코린이 탈출기

리스트뷰의 목록 변경 반영하기 - notifyDataSetChanged( ) 본문

안드로이드/안드로이드

리스트뷰의 목록 변경 반영하기 - notifyDataSetChanged( )

50HEE 2021. 5. 11. 21:30

리스트뷰의 목록 내용을 변경했을 경우 에뮬레이터를 실행했는데 앱이 죽는 경우가 있습니다.

 

Logcat을 돌렸을 때 아래와 같은 에러가 발생할 경우가 있습니다.

The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but only from the UI thread. Make sure your adapter calls notifyDataSetChanged() when its content changes.

위 내용은 어댑터를 구성하는 내용물에 변경이 있었는데 리스트뷰에는 공지를 받지 못했다는 뜻입니다.

이 에러가 생기는 이유는 리스트뷰의 내용물로 사용되는 ArryaList의 목록 / 내용이 변경되면, 리스트뷰에 연결된 어댑터에서 변경사항을 반영해달라고 요청해야 합니다. 즉, 새로고침을 해주는 개념으로 실행시켜주어야하는 코드가 있습니다. 이때 내용 변경이라 목록을 삭제, 추가, 일부분 변경과 같은 경우를 말합니다.

 

 

코드는 내용물 변경 코드 실행 시점 바로 뒤에 작성해야 합니다

어댑터 변수.notifyDataSetChanged( )

 

 

ArrayList의 내용물에 변경을 준다면 습관적으로 같이 적어주는 것이 좋습니다. 만약 그렇지 않다면 다음 터치에서 앱이 죽을 수 있기 때문입니다.

'안드로이드 > 안드로이드' 카테고리의 다른 글

toHttpUrlOrNull  (0) 2021.07.01
runOnUiThread  (0) 2021.06.24
공공 데이터  (0) 2021.06.22
<Button> 설정 바꾸기  (0) 2021.06.08
색상 추출 도구 - 픽픽  (0) 2021.05.24
Comments