코린이 탈출기
chapter 6.7 - 리스트뷰의 부가 기능 (2) - 내용물 변경 사항 반영하기 본문
chapter 6.7 - 리스트뷰의 부가 기능 (2) - 내용물 변경 사항 반영하기
50HEE 2021. 5. 11. 21:44리스트뷰의 내용물 변경 사항을 반영하는 것을 다룰 것인데, 이전에 코딩하였던 자료를 참고로 사용하여 설명하겠습니다.
이전에는 이벤트 처리를 배웠다면 이번에는 목록을 지우는 방법에 대해 다루어보겠습니다.
코드를 작성하는 곳은 MainActivity.kt입니다.

기존에 토스트를 띄우던 49 ~ 52번 줄을 지우고 작성하겠습니다.
길게 누를 경우에는 그 위치에 해당하는 줄을 지워보겠습니다.
지우는 코드는 removeAt입니다. 48번 줄과 같습니다.
여기까지 작성하고 에뮬레이터를 실행해서 길게 누를 경우 반영되지도 않고 다시 누르면 앱이 죽어버립니다.
원인을 알기 위해 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.
위와 같은 에러가 발생합니다. 즉, 어댑터를 구성하는 내용물에 변경이 있었는데 리스트뷰에는 공지를 받지 못했다는 뜻입니다.
이 에러를 해결하기 위해서 마치 새로고침을 해주는 것과 같은 동작을 실행해주어야 합니다.
내용물 변경 코드 실행 시점 바로 뒤에 작성해주어야 하는 코드입니다. 50번 줄과 같습니다.
어댑터 변수.notifyDataSetChanged( )
위 에러에 대해 정리한 글을 참고해주시기 바랍니다.
2021.05.11 - [코틀린] - 리스트뷰의 목록 변경 반영하기 - notifyDataSetChanged( )
여기까지 작성하였다면 에뮬레이터를 실행하면 원하는 대로 길게 누를 시에 해당 줄이 삭제됩니다.
'인터넷 강의 > 클래스101 - 비전공자들을 위한 나만의 안드로이드 앱 만들기' 카테고리의 다른 글
| chapter 7.1 - 코틀린 문법 - 함수 (0) | 2021.05.13 |
|---|---|
| chapter 6.8 - 리스트뷰의 재사용성에 대한 이해 (0) | 2021.05.12 |
| chapter 6.6 - 리스트뷰의 부가 기능 (1) - 이벤트 처리 - setOnItemClickListener (0) | 2021.05.11 |
| chapter 6.5 - 리스트뷰 만들기 (4) - 실제 데이터 리스트뷰에 반영하기 - getView 함수 수정 (0) | 2021.05.11 |
| chapter 6.4 - 리스트뷰 만들기 (3) - ArrayList 이용, 실제 목록 추가, 어댑터-리스트뷰 연결 (0) | 2021.05.11 |