@Composable fun ListScreen(list: MutableList, modifier: Modifier = Modifier) { val (stateList, updatedState) = remember { mutableStateOf(list) } LazyColumn(modifier = modifier.fillMaxSize()) { items(stateList, key = { it.name }) { person -> PersonItem(person) { status -> val updatedPerson = person.copy(isChecked = status) val newList = stateList.toMutableList() newList[stateList.indexOf(person)] = updatedPerson updatedState.invoke(newList) } } } } @Composable fun PersonItem( person: Person = Person(), modifier: Modifier = Modifier, callback: (status: Boolean) -> Unit, ) { Card( modifier = modifier .fillMaxWidth() .padding(4.dp), border = BorderStroke(1.dp, Color.Black), shape = RoundedCornerShape(5.dp), colors = CardDefaults.cardColors( if (person.isChecked) Color.Blue else Color.Gray ) ) { Row( modifier = Modifier .fillMaxWidth() .wrapContentHeight() .padding( vertical = 16.dp ), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.Start ) { Checkbox(checked = person.isChecked, onCheckedChange = { callback.invoke(it) }) Text(text = person.name) } } } data class Person( val name: String = "ahmad", var isChecked: Boolean = false, ) fun provideList(): MutableList { return mutableListOf( Person("ali", false), Person("mojtaba", true), Person("drog", false), ) }