Android RecyclerView에서 Jetpack Compose LazyColumn으로 이전하기: ViewBinding·ListAdapter 비교
Android RecyclerView에서 Jetpack Compose LazyColumn으로 이전하기 기존 XML 화면의 RecyclerView , ViewBinding , ListAdapter 를 Jetpack Compose로 옮길 때 가장 중요한 변화는 어댑터를 새 문법으로 바꾸는 것 이 아닙니다. ViewHolder가 화면 상태를 직접 갱신하던 구조를 버리고, 하나의 UI 상태를 Composable 함수에 전달하는 구조로 바꾸는 것이 핵심입니다. 이 글에서는 즐겨찾기 가능한 사용자 목록을 예제로 다음 과정을 한 번에 연결합니다. ListAdapter 와 DiffUtil 을 LazyColumn 의 items() 로 전환 ViewModel 의 StateFlow 를 생명주기에 맞게 수집 안정적인 key 로 스크롤 위치와 아이템 상태 보존 로딩·빈 목록·오류·정상 목록을 하나의 상태 모델로 처리 기존 Fragment에 ComposeView 를 넣어 화면을 단계적으로 이전 Compose UI 테스트로 클릭 결과 확인 이 글은 2026년 7월 Android 공식 문서를 기준으로 작성했습니다. Compose와 AndroidX 버전은 고정 숫자를 복사하기보다 프로젝트의 최신 안정 Compose BOM과 공식 릴리스 정보를 확인하세요. RecyclerView와 LazyColumn은 무엇이 다른가 둘 다 화면에 보이는 항목 중심으로 UI를 구성하므로 긴 목록에 적합합니다. 그러나 개발자가 관리하는 책임은 크게 다릅니다. RecyclerView 기반 구현 Compose 기반 구현 달라지는 책임 XML 아이템 레이아웃 @Composable 아이템 함수 레이아웃과 바인딩 로직을 Kotlin 함수로 통합 RecyclerView.ViewHolder 별도 객체 없음 현재 상태를 받아 UI를 선언 ListAdapter LazyColumn 목록 배치와 지연 구성 담당 DiffUtil.ItemCallback ...