Jetpack Compose の状態のCodeLab続き
データクラスを作って仮データを入れる
data class WellnessTask(val id: Int, val label: String) private fun getWellnessTasks() = List(30) { i -> WellnessTask(i, "Task # $i") }
このデータクラスのListをLazyColumnに表示するには以下のようにListを引数で貰うときにremember
@Composable fun WellnessTaskList( modifier: Modifier = Modifier, list: List<WellnessTask> = remember { getWellnessTasks() } ) { LazyColumn( modifier = modifier ) { items(list) { task -> WellnessTaskItem(taskName = task.label) } } }
Composeで監視できるリスト
可変オブジェクト(ArrayList
Compose で監視できる MutableList のインスタンスを作成する必要がある。
List等既に設定したいCOLLECTIONがある場合はtoMutableStateList()を使用してMutableListを作成できる。
これからListを作るような場合は mutableStateListOfを使って初期値含めてMutableListを作る。
@Composable fun WellnessScreen(modifier: Modifier = Modifier) { Column(modifier = modifier) { StatefulCounter() val list = remember { getWellnessTasks().toMutableStateList() } WellnessTasksList(list = list, onCloseTask = { task -> list.remove(task) }) } } private fun getWellnessTasks() = List(30) { i -> WellnessTask(i, "Task # $i") }
次回はViewModelの状態