Android MVVM Design Pattern Examples
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