인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

khs50851님의 프로필 이미지
khs50851

작성한 질문수

[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)

데이터베이스에 있는 북마크 정보 불러오기

데이터베이스에있는 북마크 정보 불러오기 강의 질문

작성

·

141

0

안녕하세요. 좋은강의 정말 잘 보고있습니다. 항상 감사합니다. 질문이 있는데 Bookmark 액티비티에서 북마크 정보 불러올때 override fun onDataChange(snapshot : DataSnapshot){

~~

for ~~

rvAdapter.notifyDataSetChanged()

 

}

위처럼 for문 다 돌면 rvAdapter를 동기화 시켜주는 코드를 쓰는데 저 코드가 실행되면 제일 onCreate함수가 다시 불리는건가요??아니면

val rvAdpater = RVAdapter(contentModels,baseContext)

recyclerView.adapter = rvAdapter 요 부분만 다시 불리는건가요?? rvAdapter.notifyDataSetChanged() 이 함수에 대해 조금 더 자세한 설명을 부탁드리겠습니다.

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

rvAdapter.notifyDataSetChanged() 메소드를 호출했을 때는, onCreate 함수가 다시 불리지 않습니다. 이 메소드는 연결된 데이터가 변경되었음을 어댑터에 알리고 그 결과로 연결된 RecyclerView에서 데이터의 변경을 반영하여 화면을 갱신하도록 요청합니다. 즉, 데이터가 변경된 후에 해당 메소드를 호출하면, RecyclerView가 변경된 데이터에 맞춰서 뷰를 다시 그리게 됩니다.

즉, rvAdapter.notifyDataSetChanged()는 단순히 RecyclerView에게 데이터가 변경되었으니 화면을 갱신하라는 신호를 보내는 것이며, 이로 인해 RecyclerView의 아이템 뷰들이 업데이트됩니다. 따라서 val rvAdapter = RVAdapter(contentModels,baseContext)부터 recyclerView.adapter = rvAdapter 까지의 코드가 다시 실행되는 것은 아닙니다.

이 함수의 주요 사용 목적은 데이터의 변경(추가, 삭제, 수정)이 있을 때 화면에 표시되는 내용을 최신 상태로 유지하기 위함입니다. 데이터의 변경을 감지하는 것은 개발자의 코드에 의존하며, 변경이 감지되면 해당 메소드를 호출하여 화면을 갱신하는 것은 개발자의 책임입니다.

khs50851님의 프로필 이미지
khs50851

작성한 질문수

질문하기