Android
[Android] 리스트뷰 Listview 목록 변경 반영하기 notifyDataSetChanged()
은 딩
2022. 12. 31. 01:31
Listview의 내용물로 사용되는 ArrayList의 목록/내용이 변경되면, listview에 연결된 Adapter에게, 변경사항을 반영해달라고 요청해야 함(새로고침)
=> 내용 변경 : 목록 삭제 / 추가 / 일부 변경
사용법
// 내용물 변경 코드 실행 시점 바로 뒤에
어댑터변수.notifyDataSetChanged()
특이사항
- ArrayList의 내용물에 변경을 준다면, 습관적으로 같이 적어주자.
=> 목록의 내용물이 변경되었는데 어댑터가 인지 못한채로 놔두면, 다음 터치에서 앱이 죽음 - 어댑터변수의 새로고침 기능은 많은 곳에서(다양한 함수에서) 사용하게 됨
=> 어댑터 변수는 Activity 내부의 어느곳에서라도 사용할 수 있도록, 멤버변수로 만드는 게 유리
=> 멤버변수 단에서는 어댑터변수의 초기화가 불가능
=> 번거로워도, lateinit var를 사용해서 멤버변수로 만드는 이유
viewBinding.studentListView.setOnItemLongClickListener { parent, view, position, id ->
mStudentList.removeAt(position)
mAdapter.notifyDataSetChanged() // 새로고침
return@setOnItemLongClickListener true
}
참고 : class101+ 코딩티처 지니 강의