mutableStateListOf не выполняет рекомпозицию при замене какого-либо элемента в списке на targetdk 33 и kotlin 1.7.20

Перекомпоновка произойдет только тогда, когда вы измените сам список. mutableStateListOf может только уведомлять о добавлении, удалении или замене какого-либо элемента в списке.

Ссылка: Android Jetpack Compose mutableStateListOf не выполняет рекомпозицию

Основываясь на предыдущем предположении, рекомпозиция должна запускаться при вызове метода like() в приведенном ниже коде, и это происходило ранее. Но поскольку в моем коде есть обновленные версии, рекомпозиция не запускается при вызове метода like().

Я использую следующие версии в своем проекте и некоторые другие версии библиотеки, которые я обновил:-

      val compilesdk = 33
val minsdk = 21
val targetsdk = 33
val kotlin = "1.7.20"
val compose_compiler = "1.4.0"
val compose_ui = "1.3.3"
val compose_runtime = "1.3.3"
val compose_foundation = "1.3.1"
val compose_material = "1.3.1"

ViewModel

      val recipes = mutableStateListOf<Recipe>()

fun like(index: Int, likes: ArrayList<String>) {
    recipes[index] = recipes[index].copy(likes = likes)
}

Составные

      SocialNetworkContent(
      viewModel.recipes,...
)

@Composable
fun SocialNetworkContent(
    recipes: List<Recipe>,
    ...
){
..
items(
                count = recipes.size,
                itemContent = {
                    SocialListItem(
                        recipe = recipes[it],
                        it,
                        sharedPreferences,
                        viewModel,
                        onNavigateToRecipeDetailScreen,
                        onNavigateToUserProfileScreen
                    )
                },
            )
..
}

1 ответ

когда вам нужно изменить элемент состояния позиции вlazyColumnилиlazyRow, вам нужно добавитьkey

      LazyColumn {
    items(
        items = messages,
        key = { message ->
            // Return a stable + unique key for the item
            message.id
        }
    ) { message ->
        MessageRow(message)
    }
} 
Другие вопросы по тегам