【发布时间】: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