summaryrefslogtreecommitdiff
path: root/compiler/src/main/java/android/databinding/tool/BindingTarget.java
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/src/main/java/android/databinding/tool/BindingTarget.java')
-rw-r--r--compiler/src/main/java/android/databinding/tool/BindingTarget.java28
1 files changed, 12 insertions, 16 deletions
diff --git a/compiler/src/main/java/android/databinding/tool/BindingTarget.java b/compiler/src/main/java/android/databinding/tool/BindingTarget.java
index 74ef86cd..8c59ca75 100644
--- a/compiler/src/main/java/android/databinding/tool/BindingTarget.java
+++ b/compiler/src/main/java/android/databinding/tool/BindingTarget.java
@@ -58,28 +58,24 @@ public class BindingTarget implements LocationScopeProvider {
L.e(ErrorMessages.TWO_WAY_EVENT_ATTRIBUTE, name);
}
mBindings.add(new Binding(this, name, expr));
- if (expr.isTwoWay()) {
- try {
- Scope.enter(expr);
- expr.assertIsInvertible();
- final InverseBinding inverseBinding = new InverseBinding(this, name, expr);
- mInverseBindings.add(inverseBinding);
- mBindings.add(new Binding(this, inverseBinding.getEventAttribute(),
- mModel.twoWayListenerExpr(inverseBinding),
- inverseBinding.getEventSetter()));
- } finally {
- Scope.exit();
- }
- }
}
public String getInterfaceType() {
return mBundle.getInterfaceType() == null ? mBundle.getFullClassName() : mBundle.getInterfaceType();
}
+ public InverseBinding addInverseBinding(String name, Expr expr, String bindingClass) {
+ expr.assertIsInvertible();
+ final InverseBinding inverseBinding = new InverseBinding(this, name, expr, bindingClass);
+ mInverseBindings.add(inverseBinding);
+ mBindings.add(new Binding(this, inverseBinding.getEventAttribute(),
+ mModel.twoWayListenerExpr(inverseBinding),
+ inverseBinding.getEventSetter()));
+ return inverseBinding;
+ }
+
public InverseBinding addInverseBinding(String name, BindingGetterCall call) {
- final InverseBinding inverseBinding = new InverseBinding(this, name, null);
- inverseBinding.setGetterCall(call);
+ final InverseBinding inverseBinding = new InverseBinding(this, name, call);
mInverseBindings.add(inverseBinding);
mBindings.add(new Binding(this, inverseBinding.getEventAttribute(),
mModel.twoWayListenerExpr(inverseBinding)));
@@ -111,7 +107,7 @@ public class BindingTarget implements LocationScopeProvider {
if (mResolvedClass == null) {
if (mBundle.isBinder()) {
mResolvedClass = ModelAnalyzer.getInstance().
- findClass(ModelAnalyzer.VIEW_DATA_BINDING, mModel.getImports());
+ findClass(mBundle.getInterfaceType(), mModel.getImports());
} else {
mResolvedClass = ModelAnalyzer.getInstance().findClass(mBundle.getFullClassName(),
mModel.getImports());