在Android MVVM架构中,视图(Activity或Fragment)通过ViewModel与数据进行交互。当需要传递大表单数据给ViewModel时,可以通过以下步骤进行解决:
data class Person(
val name: String,
val age: Int,
val address: String
)
val viewModel: MyViewModel by viewModels {
MyViewModelFactory(Person("", 0, ""))
}
在Fragment中:
val viewModel: MyViewModel by activityViewModels {
MyViewModelFactory(Person("", 0, ""))
}
val person = Person(
nameEditText.text.toString(),
ageEditText.text.toString().toInt(),
addressEditText.text.toString()
)
viewModel.submit(person)
在Fragment中:
val person = Person(
nameEditText.text.toString(),
ageEditText.text.toString().toInt(),
addressEditText.text.toString()
)
viewModel.submit(person)
class MyViewModel(private val initialPerson: Person) : ViewModel() {
private val _person = MutableLiveData()
val person: LiveData get() = _person
init {
_person.value = initialPerson
}
fun submit(person: Person) {
// 处理表单数据
}
}
通过这种方式,大表单数据可以轻松地从视图传递给ViewModel,并在ViewModel中进行处理。