diff options
Diffstat (limited to 'compiler/src/main/java/android/databinding/tool/BindingTarget.java')
-rw-r--r-- | compiler/src/main/java/android/databinding/tool/BindingTarget.java | 28 |
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()); |