推荐教程:
这是简单的使用,使用的方式并不一定是好的,仅供参考
首先新建 ViewModel
类:
class MyViewModel: ViewModel() {
val number: MutableLiveData<ObservableInt> = MutableLiveData()
init {
this.number.value = ObservableInt(0)
}
}
然后在 MainActivity
中与 DataBinding
绑定。
class MainActivity : AppCompatActivity() {
var myViewModel: MyViewModel = MyViewModel()
private lateinit var binding: ActivityMainBinding;
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
// 得到 ViewModal 的对象
myViewModel = ViewModelProviders.of(this).get(MyViewModel().javaClass)
// 与 DataBinding 绑定
myViewModel.number.observe(this, {integer: ObservableInt -> binding.number = integer})
}
// 这样我就只需要改变值就可以了
fun onAdd(view: View) {
myViewModel.number.value?.set(myViewModel.number.value!!.get() + 1)
}
fun onSub(view: View) {
myViewModel.number.value?.set(myViewModel.number.value!!.get() - 1)
}
}
之所以用 ViewModel
,是因为我们发现当横屏或切换语言的时候会出现数据归零的情况。
可以看前面的 DataBinding
的学习笔记: [学习]JetPack中的DataBinding(一)
。在这个例子中的数据只要切换语言或屏幕切换就会出现数据初始化了。
网友评论