the data to be displayed • The view is a passive interface that displays data and routes user commands (events) to the presenter to act upon that data. • The presenter acts upon the model and the view. It retrieves data from repositories (the model), and formats it for display in the view. Passive View Model Presenter user events updates model updates view state-change event
• Supports Lists • Reuse ViewModel across iOS/Android/Windows Phone • Used by many developers, many apps published to Google Play/AppStore etc. • True MVVM similar to WPF • Cons • Only for Xamarin/C# • May need some additional work in order to make it work with AppCompat Library
Easy to extend • Supports Lists • Cons • No support for RecyclerView • Problems with AppCompat library • No support for Lists with two and more types of item layout https://github.com/radzio/RoboBindingDemo
language android:text='@{String.format("Hello %s",viewModel.field )}‚ • Imports • Support for resources android:padding="@{large? @dimen/largePadding : @dimen/smallPadding}„ • Built in ButterKnife functionality binding.myButton.setOnClickListener(new …); • Ability to create custom bindings • And more!
Google • Code generation • Compile time check • Easy to use and extend • Expression language! • New standard • Cons • No TwoWay binding (yet) • Currently NO IDE support • A lot of false positive errors in Android Studio, but code is compiling and running