[学习jetPack中的ViewModel(一)

2021-02-05  本文已影响0人  吴敬悦

推荐教程:

这是简单的使用,使用的方式并不一定是好的,仅供参考
首先新建 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(一)
。在这个例子中的数据只要切换语言或屏幕切换就会出现数据初始化了。

上一篇 下一篇

猜你喜欢

热点阅读