在Android中,EditText是最常用的用户输入控件之一,而LiveData则是让数据响应更加容易的一种实现。因此,在EditText中使用LiveData是一种非常好的实践。下面是在EditText中使用LiveData的示例代码:
首先,在布局xml文件中添加EditText和TextView控件,并使用DataBinding将LiveData与布局绑定。
activity_main.xml
接着,在ViewModel中创建LiveData实例并使用它来保存EditText中的文本值。
MainViewModel.kt
class MainViewModel: ViewModel() {
val liveDataValue = MutableLiveData()
fun onTextChanged(newText: CharSequence) {
liveDataValue.value = newText.toString()
}
}
最后,在Activity中实例化ViewModel并将它与布局绑定。
MainActivity.kt
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
val viewModel = ViewModelProviders.of(this).get(MainViewModel::class.java)
binding.viewModel = viewModel
binding.lifecycleOwner = this
binding.editText.addTextChangedListener(object : TextWatcher {
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {}
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
viewModel.onTextChanged(s!!)
}
override fun afterTextChanged(s: Editable?) {}
})