小编Moh*_*hat的帖子

Jetpack Compose:更新列表元素内容时不会发生重组

我正在尝试 Android 的 Jetpack Compose。
\n对于简单的用例,一切都按预期工作,
\n但我在缺少更高级案例的重组方面遇到了一些麻烦。

\n

我的型号

\n

我正在模拟一个原料存储系统,其中

\n
    \n
  • 成分由名称和可选图标组成
  • \n
\n
data class Ingredient(val name: String, @DrawableRes val iconResource: Int? = null)\n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  • StorageItem由成分和库存(该成分的存储量)组成
  • \n
\n
data class StorageItem(val ingredient: Ingredient, var stock: Int)\n
Run Code Online (Sandbox Code Playgroud)\n

我的可组合项

\n

我的StorageUi可组合项应该列出所有存储项目
\n并显示成分的图标和名称以及库存。
\n对于这篇文章,我删除了所有不相关的修饰符和格式以简化可读性。
\n(请注意,我使用没有视图模型的第二个版本重载了 StorageScreen 可组合项,
\n是为了更轻松地进行测试并促进 Android Studio 中的预览功能。)

\n
    @Composable\n    fun StorageScreen(viewModel: StorageViewModel) {\n        StorageScreen(\n            navController = navController,\n            storageItems = viewModel.storageItems,\n            onIngredientPurchased = viewModel::purchaseIngredient\n        )\n    }\n\n    @Composable\n …
Run Code Online (Sandbox Code Playgroud)

android kotlin android-viewmodel android-jetpack-compose lazycolumn

8
推荐指数
1
解决办法
8191
查看次数