问题
I am learning to use Data Binding Library. I came to know that it removes the need to call findViewById() manually and makes the code more robust and readable.
To understand the use, I did the following:
made a temp_layout.xml which contains 2 text views with ids 'tv1' and 'tv2'
added the
<layout>
tag as rootclicked on 'build project'
Now I found that a new 'TempLayoutBinding' class was available which contained the variables 'tv1' and 'tv2'.
My question is that, even when I already specified the <layout>
tag in the temp_layout.xml, why do I still need to call mBinding = DataBindingUtil.setContentView(...)
?
What specifically does it do?
回答1:
What the regular setContentView(layoutRes)
does is display your UI in the current activity and inflates it into a view that's added to the Activity Context, so you can call findViewById and other methods over the inflated layout.
In data binding, the regular setContentView(layoutRes)
is replaced with DataBindingUtil.setContentView(context, layoutRes)
, it does all the above plus creating the binding object, it does findViewById and all other data binding related tasks under the hood and gives you the binding object that's ready for use.
回答2:
DataBindingUtil.setContentView()
set the Activity's content view to the given layout and return the associated binding. It is same as Activity's setContentView()
.
If you not call DataBindingUtil.setContentView()
or setContentView()
, you will only get a blank screen.
来源:https://stackoverflow.com/questions/45706965/whats-the-need-to-call-databindingutil-setcontentview-when-using-data-binding