【问题标题】:Can't implement ViewModel in Jetpack Compose无法在 Jetpack Compose 中实现 ViewModel
【发布时间】:2022-08-13 22:50:01
【问题描述】:

我已经简化了我的问题。我有一个列表列表作为数据源,当它更新时,我希望重建组件。我正在使用 show() 对其进行更新,但组件不会重新组合。我对此很陌生,我发现的大部分信息都是关于我无法理解的 xml。

class Item(
    var isShown: Boolean
)
class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            MyApplicationTheme {
                val myApplicationViewModel: MyApplicationViewModel by viewModels()
                MyApp(myApplicationViewModel)
            }
        }
    }
}

@Composable
fun MyApp(myApplicationViewModel: MyApplicationViewModel = viewModel()) {
    MyApplicationScreen(
        allItems= myApplicationViewModel.getAllItems(),
        onClick = {
            myApplicationViewModel.show()
        }
    )
}
@Composable
fun MyApplicationScreen(
    allItems: List<List<Item>>,
    onClick: () -> Unit,
) {
    Button(onClick = onClick) {
        if (allItems[0][0].isShown) {
            Text(text = \"shown\")
        } else {
            Text(text = \"hidden\")
        }
    }
}
class MyApplicationViewModel : ViewModel() {

    private val items = mutableStateListOf<List<Item>>()

    init {
        items.add(listOf(Item(isShown = false)))
    }

    fun getAllItems(): List<List<Item>> {
        return items
    }

    fun show() {
        items[0][0].isShown = true
    }
}

    标签: android android-jetpack-compose viewmodel android-viewmodel jetpack


    【解决方案1】:

    它在我的项目中工作。 也许您需要重建项目或使缓存无效。

    【讨论】:

      猜你喜欢
      • 2022-11-04
      • 2023-01-04
      • 1970-01-01
      • 2021-12-07
      • 1970-01-01
      • 1970-01-01
      • 2023-01-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多