スポンサーリンク

【Jetpack Compose】Listの変更をRecompose起点にする

スポンサーリンク

mutableStateListOf

ListをStateとしてComposeのrecompose起点としたい場合にはmutableStateListOf()関数を用いてListを作成すればよい。

viewmodel層に作成しておけばいいので基本的には以下となる

private val _items = mutableStateListOf<String>()
val items: List<String>
    get() = _items

List<List<T>>の内部Listの変更を検知したい

Listがネストされている時に内部のListの変更まで検知したい場合には、以下のように内部のListもSnapshotStateListOfとする必要があります。

private val _items = mutableStateListOf<SnapshotStateList<String>>()
val items: List<List<String>>
    get() = _items

公開変数についてはともにListとして不用意な変更を受け付けないようにします。

もし内部のListをSnapshotStateListとせずに、MutableListやListを使用した場合は、そのListの置き換えに対して外部のSnapshotStateListは検知してくれますが、そのListの変更については検知してくれません。

タイトルとURLをコピーしました