怎么实现从view向viewmodel传文本框的值?
时间: 2024-10-13 12:08:11 浏览: 21
在MVVM设计模式中,通常通过数据绑定或者事件通知机制来实现从View(视图)向ViewModel(视图模型)传递文本框的值。这里以Android的Jetpack Compose库为例:
1. 数据绑定:你可以使用`remember`来记住文本框的值,并将其作为`Binding`类型的属性绑定到ViewModel的相应字段上。当用户输入改变时,文本框的值会自动更新到ViewModel。
```kotlin
@Composable
fun TextViewValue(viewModel: MyViewModel) {
val text = remember { viewModel.textField.value }
TextField(
value = text,
onValueChange = viewModel::textFieldValueChanged,
)
}
// ViewModel部分
class MyViewModel() {
var textFieldValue = remember { mutableStateOf("") }
fun textFieldValueChanged(newText) {
textFieldValue.value = newText
}
}
```
2. 事件通知:当用户在文本框中输入时,可以触发一个事件,然后在ViewModel中处理这个事件并更新状态。
```kotlin
@Composable
fun TextViewEvent(viewModel: MyViewModel) {
LaunchedEffect(textField.onValueChange) {
viewModel.textFieldValueChanged(it)
}
// ...
}
```
阅读全文