728x90
안녕하세요 오늘은 Jetpack Compose 를 사용하여 목록 아이템에 체크 박스를 추가해보도록 하겠습니다
LazyColumn 는 간편하게 목록을 만들 수 있는 Jetpack Compose 의 구성 요소 중 하나 입니다
기존 리사이클러뷰와 같은 기능을 훨씬 간편하게 구현할 수 있습니다 !
LazyColumn에 있는 아이템 마다 체크 박스를 만들어주기 위해 Check box 를 추가해줍니다
LazyColumn {
items(items) { item ->
val index = items.indexOf(item)
Row(
modifier = Modifier
.fillMaxWidth()
.padding(vertical = 8.dp)
.clickable {
selectedItems[index] = !selectedItems[index] // 체크박스 상태 토글
}
.padding(16.dp),
verticalAlignment = androidx.compose.ui.Alignment.CenterVertically // 세로 정렬
) {
Checkbox(
checked = selectedItems[index],
onCheckedChange = { checked -> selectedItems[index] = checked }
)
Text(
text = item,
color = Color.Black,
modifier = Modifier.padding(start = 16.dp)
)
}
}
}
아래는 전체 코드 입니다.
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
Kotlin_exampleTheme {
// A surface container using the 'background' color from the theme
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colorScheme.background
) {
ItemList(cnt = 100)
}
}
}
}
}
// item list
@Composable
fun ItemList (cnt : Int) {
val items = List (cnt) { "Item ${it + 1}"}
// 아이템 체크 박스 변수
val selectedItems = remember { mutableStateListOf<Boolean>().apply { repeat(cnt) { add(false) } } }
//아이템 체크 박스
LazyColumn {
items(items) { item ->
val index = items.indexOf(item)
Row(
modifier = Modifier
.fillMaxWidth()
.padding(vertical = 8.dp)
.clickable {
selectedItems[index] = !selectedItems[index] // 체크박스 상태 토글
}
.padding(16.dp),
verticalAlignment = androidx.compose.ui.Alignment.CenterVertically // 세로 정렬
) {
Checkbox(
checked = selectedItems[index],
onCheckedChange = { checked -> selectedItems[index] = checked }
)
Text(
text = item,
color = Color.Black,
modifier = Modifier.padding(start = 16.dp)
)
}
}
}
}
@Preview(showBackground = true)
@Composable
fun GreetingPreview() {
Kotlin_exampleTheme {
// Greeting("Android")
ItemList(cnt = 100)
}
}
'안드로이드 코틀린' 카테고리의 다른 글
[Kotlin][Android] Jetpack Compose 클릭한 아이템 개수 실시간 업데이트하기 (8) | 2024.10.03 |
---|---|
[Kotlin][Android]전화번호 입력된 전화 앱 열기 (0) | 2024.09.30 |
[Kotlin][Android] Jetpack Compose 클릭 이벤트 설정하기 (2) | 2024.09.22 |
[Kotlin][Android] Jetpack Compose 로 텍스트 목록 만들기 (2) | 2024.09.16 |
[Android][코틀린] 이미지 필터 만들기 (2) | 2024.01.02 |