← 글 목록

notes

Android - Jetpack Compose 기초

Composable·remember·LazyColumn·ViewModel 연결을 일기형으로 정리.

XML findViewById 왕복에 지쳐서 Compose 템플릿으로 갈아탔다. 처음엔 “함수가 UI라고?” 했는데, 상태가 바뀌면 body가 다시 평가된다는 느낌으로 정리하니 편했다.

최소 단위

@Composable
fun Counter() {
    var count by remember { mutableStateOf(0) }
    Button(onClick = { count++ }) {
        Text("클릭 $count")
    }
}
  • @Composable: UI 조각
  • remember + mutableStateOf: 리컴포지션에도 값 유지
  • 상태 변경 → 그 상태를 읽는 Composable만 다시 실행

Activity 연결

setContent {
    MyTheme {
        Counter()
    }
}

리스트

LazyColumn {
    items(users) { user ->
        Text(user.name)
    }
}

RecyclerView 어댑터 대신 items. 키를 안정적으로 주면 깜빡임이 줄다.

ViewModel

val vm: MainViewModel = viewModel()
val ui by vm.state.collectAsStateWithLifecycle()

화면 회전에도 VM이 살아 있으니 remember에 서버 데이터를 몰아넣지 않는다.

아직 XML과 섞을 때

AndroidView로 MapView 같은 걸 넣고, 반대로 기존 화면에 ComposeView를 붙인다. 한 mid 규모 앱에서 “전부 Compose”는 드물다.