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