Curently, I'm using data binding
for two cases:
views
in fragmentview model
in layout.When I compare with view binding
, I see both methods fine (view binding
better to access views
, data binding
to bind data),
so which pattern should be preferred for MVVM?
Should I move to view binding
and handle ViewModel-layout
connections in fragment only?
For your question Should View Binding replace Data Binding
, the answer is it depends on the usecase.
The ViewBinding only generates the ViewBinding of your layout files, so you can refer to the views without using findViewById
.
The DataBinding provides you the same but with extra functionalities like data-binding expressions (putting common Java logic in XML), common data variable for whole xml, annotations, etc.
So when to use these?
In case you just need to access views in your Java code without any complex/repeating view logic (eg: change visibility of multiple views on basis of one data variable), then you should use ViewBinding
as it is lighter and faster.
But in case you need more than just accessing the views like binding expressions, binding adapters, etc. (which is general requirement of big projects). You should use DataBinding
as it provide more features.
For more info, please have a look at
https://developer.android.com/topic/libraries/view-binding#data-binding - Comparison by AndroidDeveloper
https://proandroiddev.com/new-in-android-viewbindings-the-difference-from-databinding-library-bef5945baf5e - Comparison by ProAndroidDev
View binding does not replace Data binding.
View binding is intended to handle simpler use cases and you can use data binding in layouts that require advanced features.
Benefit of view binding:
Limitations compared to data binding:
Because of these considerations, it is best in some cases to use both view binding and data binding in a project.
Please have a look at the android official doc comparing view binding with data binding: Comparison with data binding
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With