Android之ViewModel、LiveData、DataBinding

Android之ViewModel、LiveData、DataBinding_第1张图片
谷歌提供的ViewModel可以更好的实现Android项目MVVM的架构,实现UI和数据的分离。在Activity生命周期内ViewModel是可以共享的,比如Activity和Fragment之间可以共用同一个ViewModel,那么通信就是这么简单。

在我看来ViewModel和LiveData就是最佳拍档,LiveData利用观察者模式对数据进行观察监听,只要数据有变化就会触发事件,从而刷新UI。

DataBinding简单点说就是数据绑定UI,Data类绑定UI后就可以在布局中使用了。这个绑定涉及面比较广,需要查找更多的资料学习。

一、ViewModel、LiveData

class MyViewModel : ViewModel() {
    var mNum = MutableLiveData()
}

class MyActivity: AppCompatActivity() {
	onCreate() {
		mViewModel = ViewModelProviders.of(this).get(MyViewModel::class.java)
		// 观察者
		mViewModel.mNum.observe(this, Observer {
			// 刷新UI
		})
	}
}

class MyFragment: Fragment() {
	onCreateView() {
		mViewModel = ViewModelProviders.of(activity).get(MyViewModel::class.java)
		// 观察者
		mViewModel.mNum.observe(this, Observer {
			// 刷新UI
		})
	}
}

二、DataBinding

1、开启DataBinding

首先需要在build.grade文件中开启DataBinding,不然项目是不会生成相关布局的DataBinding文件的
android {
	dataBinding {
        enabled true
    }
}

2、使用方法

布局文件xml

	
	// 这里可以绑定ViewModel
	
	
	// 这里可以使用ViewModel数据
	


Activity
class MyActivity: AppCompatActivity() {
	onCreate() {
		dataBinding = DataBindingUtil.setContentView(R.layout.activity_my)
		// 然后就可以通过dataBinding.id调用控件了。
	}
}

其实Kotlin直接就可以通过控件id来调用控件了,所以主要目的在于绑定ViewModel。

你可能感兴趣的:(android)