I currently do a lot of WPF development and have started creating some basic Android apps. When creating WPF apps I often use MVVM, normally using Prism, and would like to know if there are any examples of MVVM for the Android platform?


I am the developer of Android-Binding. Like @Brentley said, it's a very new project but I do hope to get more buzz and experience so that it can be improved. Back to your question, I have written some simple introduction/tutorials on MVVM with android-binding:

  • Android MVVM Tutorials (with android binding)
  • Introduction to Android Binding (codeproject)
  • Model Validation in Android Binding (codeproject)
  • Wiki in project homepage

Potential adopters please also register on the project discussion group.


I sometimes use ViewModels to translate from a pure Model to what the Model should be displayed as, but so much of the MVVM-isms come from the fact that you have this massive data binding engine built into the WPF framework. You probably won't find the exact experience of WPF + MVVM in the Android world, but you can take a lot of the good concepts and implement them (just without the automatic data binding stuff).

For one, just create ViewModels. You don't need a framework like Prism to create ViewModels. You don't have all the PropertyChanged notifications and stuff like that, but you can translate your data into information that can be better used by your UI which will clean up your code. A perfect example of this is something I did with a slider-heavy UI. Android's SeekBar is always zero based and works with integer values, so you can't bind to min, max, and increment values from your model. You can use a ViewModel to translate your min/max values into 0-based equivalents that your SeekBar can use...just an example. Same goes for displaying colors and sizes based on value ranges, etc. To me, that's what ViewModels are all about.

As far as DependencyInjection stuff, check out RoboGuice. I just started using this in one of my projects after seeing a presentation by its creator at a local Meetup, and it's probably just what you're looking for.

RoboGuice on Google Code

RoboGuice Google Group


Great! Articals by @Florina Muntenescu

The Model-View-ViewModel Pattern

The main players in the MVVM pattern are:

  • The View — that informs the ViewModel about the user’s actions
  • The ViewModel — exposes streams of data relevant to the View
  • The DataModel — abstracts the data source. The ViewModel works with the DataModel to get and save the data.

Example of MVVM Architecture:

https://github.com/erikcaffrey/People-MVVM

https://github.com/googlesamples/android-architecture/tree/todo-mvvm-databinding/

https://github.com/iammert/Android-MVVM-Architecture

https://github.com/segunfamisa/android-mvvm-sample

https://github.com/manas-chaudhari/android-mvvm


There is now an official Android Data Binding plugin although it's still in beta at the moment. Work is also being done to add tooling support for the binding syntax in the beta version of Android Studio.

See below for more information:

https://developer.android.com/tools/data-binding/guide.html


There is a relatively new framework being developed that allows for Views to be bound to ViewModels called android-binding. Using this framework and RoboGuice you can get your MVVM on. The framework still needs some work, but it's a good starting point.