I have searched for some similar questions before posting – however I have a general question when it comes to Android and data binding (and the other answers I check did not really get me much further…). Assume you have a class Vehicle:
public class Vehicle {
private Owner owner;
private String brand;
//getter and setter for above attributes...
}
and here is the Owner class ….
public class Owner {
private String name;
}
Now – I was just recently looking into MVVM (ModelView-ViewModel) pattern as employed by Microsofts WPF. Which got me wondering: Assuming I would want to bind the name property of my owner object which is a child of the Vehicle object – would there be some standard way in Android to achieve this? Also presuming, that I might have to validate input before I can have the Model updated?
I was imagining the following components (assuming MVVM):
- The View (an Activity) contains no application logic – so its more or less empty
- A ViewModel would handle the instance of the Vehicle object and perform actions on it
- The Model itself would look as the code I posted before – totally oblivious to the View
and the ViewModel
Now when I add my EditTexts, TextViews and so on to the view, I want them to bind to certain the properties of my context object (Vehicle in this case) … Mhhh if my question is not clear or you need further informatio do let me know 🙂 thanks in advance.
P.s. I think people familiar with WPF might now what I mean? I myself just read about WPF and found it’s a nice way to handle stuff.
P.P.s I am aware of the android binding project but I was wondering if there is a sort of build-in approach in Android or maybe some convention someone is following 🙂 this really is more of a binding-theory question I guess …
There is nothing “baked” into the Android SDK which provides equivalent databinding functionality found in MS WPF. Google is providing a lower level interface for the various devices running Android. To date, higher level application frameworks have not emerged from the Android development community. (IMHO, it would take a monster company like Google to create such a thing, given all the different constraints on a framework for all the various Android devices.)
You could create a set of databinding classes in your own application to handle your needs for the MVVM pattern. The “Databinders” would set the relevant event handlers on Android View objects and run some appropriate method on your ViewModel objects in response. They would also translate change events (that you define) on the ViewModel into the appropriate property assignments on the View objects.
Whether that turns out to be worthwhile for your application is a judgment call. My guess is that it would require more effort to write the Databinder classes than just to hook the lower level View event handlers directly. Frameworks are useful primarily when you didn’t have to write them yourself.