diff options
author | George Mount <mount@google.com> | 2015-10-06 14:13:24 -0700 |
---|---|---|
committer | George Mount <mount@google.com> | 2015-10-07 13:17:23 -0700 |
commit | 8510dab6a17ccd59a2a9cbc07f900dfc2f11ff2b (patch) | |
tree | 46841f1f24163cec62da0aab444844894a979ff1 /compilerCommon | |
parent | 90d6351746810033df84e2e6878584d64ebae098 (diff) | |
download | data-binding-8510dab6a17ccd59a2a9cbc07f900dfc2f11ff2b.tar.gz |
Support including data binding layout with no variables.
Bug 24710573
Change-Id: Ic2461e5e2c440f66fe95b9714b9cbcb61f8bd82d
Diffstat (limited to 'compilerCommon')
-rw-r--r-- | compilerCommon/src/main/java/android/databinding/tool/store/LayoutFileParser.java | 9 | ||||
-rw-r--r-- | compilerCommon/src/main/java/android/databinding/tool/store/ResourceBundle.java | 12 |
2 files changed, 13 insertions, 8 deletions
diff --git a/compilerCommon/src/main/java/android/databinding/tool/store/LayoutFileParser.java b/compilerCommon/src/main/java/android/databinding/tool/store/LayoutFileParser.java index 89a52137..fcf0379d 100644 --- a/compilerCommon/src/main/java/android/databinding/tool/store/LayoutFileParser.java +++ b/compilerCommon/src/main/java/android/databinding/tool/store/LayoutFileParser.java @@ -166,13 +166,8 @@ public class LayoutFileParser { } else if (ctx == rootView) { return true; } - if (hasIncludeChild(ctx)) { - return true; - } - if (XmlEditor.hasExpressionAttributes(ctx)) { - return true; - } - return false; + return hasIncludeChild(ctx) || XmlEditor.hasExpressionAttributes(ctx) || + "include".equals(ctx.elmName.getText()); } private boolean hasIncludeChild(XMLParser.ElementContext ctx) { diff --git a/compilerCommon/src/main/java/android/databinding/tool/store/ResourceBundle.java b/compilerCommon/src/main/java/android/databinding/tool/store/ResourceBundle.java index e8215f86..e9879edf 100644 --- a/compilerCommon/src/main/java/android/databinding/tool/store/ResourceBundle.java +++ b/compilerCommon/src/main/java/android/databinding/tool/store/ResourceBundle.java @@ -86,18 +86,28 @@ public class ResourceBundle implements Serializable { public void validateMultiResLayouts() { for (List<LayoutFileBundle> layoutFileBundles : mLayoutBundles.values()) { for (LayoutFileBundle layoutFileBundle : layoutFileBundles) { + List<BindingTargetBundle> unboundIncludes = new ArrayList<>(); for (BindingTargetBundle target : layoutFileBundle.getBindingTargetBundles()) { if (target.isBinder()) { List<LayoutFileBundle> boundTo = mLayoutBundles.get(target.getIncludedLayout()); if (boundTo == null || boundTo.isEmpty()) { - L.e("There is no binding for %s", target.getIncludedLayout()); + L.d("There is no binding for %s, reverting to plain layout", + target.getIncludedLayout()); + if (target.getId() == null) { + unboundIncludes.add(target); + } else { + target.setIncludedLayout(null); + target.setInterfaceType("android.view.View"); + target.mViewName = "android.view.View"; + } } else { String binding = boundTo.get(0).getFullBindingClass(); target.setInterfaceType(binding); } } } + layoutFileBundle.getBindingTargetBundles().removeAll(unboundIncludes); } } |