Jetpack Compose не обнаруживает изменение состояния, когда я обновляю список массивовAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Jetpack Compose не обнаруживает изменение состояния, когда я обновляю список массивов

Сообщение Anonymous »

У меня есть объект, который хранит состояние моего пользовательского интерфейса и выглядит следующим образом:

Код: Выделить всё

data class MainActivityUiState(
/*** rest **/
val usersData : ArrayList
)
Я реализую это в модели представления следующим образом

Код: Выделить всё

    private val _uiState = MutableStateFlow(
MainActivityUiState(
/*** rest ***/
usersData = ArrayList()
)
)

var uiState = _uiState.asStateFlow()
затем, когда произойдут изменения, я делаю следующее:

Код: Выделить всё

val listToAdd = _uiState.value.usersData
listToAdd.add(one)

_uiState.value = _uiState.value.copy(
usersData = listToAdd
)
я помещаю оператор регистрации до и после, чтобы убедиться, что размер суммируется, и это так.
в действии я собираю состояние следующим образом:

Код: Выделить всё

uiState = viewModel.uiState.collectAsState()
и ссылка работает, потому что у меня есть другие состояния в uistate, которые при изменении фиксируются пользовательским интерфейсом.
вот как я отслеживаю изменения состояния для списка массивов

Код: Выделить всё

LazyColumn(
modifier = Modifier.padding(innerPadding)
.background(Color.White)
.fillMaxSize()
) {
items(uiState.value.usersData ){ match ->
Text(match.name)
}
}
Я также пробовал добавлять элементы непосредственно в состояние пользовательского интерфейса, как показано внутри модели представления:

Код: Выделить всё

_uiState.value.usersData.add(one)

что не сработало

Подробнее здесь: https://stackoverflow.com/questions/788 ... -arraylist
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»