在MVC中可以通过addView来动态的添加view,那么mvvm通过databinding动态添加view也可以。
DataBindingUtil中提供了setContentView和inflate两个方法,setContentView是直接用来添加布局的,和mvc中的setContentView的实现同样的功能,那么动态添加view就是通过inflate方法来实现的了。
这里使用的是四个参数的inflate方法,第一个是layoutInflater,第二个是布局,第三个是viewGroup就是要在哪个layout中添加布局,第四个false。
在使用此方法时要注意添加databindind的泛型,此泛型是动态布局的databinding。示例如下:
val demoBinding:ActivityDemoBinding = DataBindingUtil.inflate<ActivityDemoBinding>(
LayoutInflater.from(mActivity.applicationContext),
R.layout.activity_demo, container, true)
//通过demoBinding就可以获取activity_demo中组件的id了