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”는 드물다.