diff options
41 files changed, 257 insertions, 211 deletions
diff --git a/tools/data-binding/compiler/src/main/java/android/databinding/tool/BindingTarget.java b/tools/data-binding/compiler/src/main/java/android/databinding/tool/BindingTarget.java index ab88cf8f3837..79156c02a007 100644 --- a/tools/data-binding/compiler/src/main/java/android/databinding/tool/BindingTarget.java +++ b/tools/data-binding/compiler/src/main/java/android/databinding/tool/BindingTarget.java @@ -30,6 +30,8 @@ public class BindingTarget { List<Binding> mBindings = new ArrayList<Binding>(); ExprModel mModel; ModelClass mResolvedClass; + String mFieldName; + // if this target presents itself in multiple layout files with different view types, // it receives an interface type and should use it in the getter instead. private ResourceBundle.BindingTargetBundle mBundle; @@ -98,4 +100,12 @@ public class BindingTarget { public void setModel(ExprModel model) { mModel = model; } + + public void setFieldName(String fieldName) { + mFieldName = fieldName; + } + + public String getFieldName() { + return mFieldName; + } } diff --git a/tools/data-binding/compiler/src/main/java/android/databinding/tool/LayoutBinder.java b/tools/data-binding/compiler/src/main/java/android/databinding/tool/LayoutBinder.java index 304fd3163a0c..9d275757235f 100644 --- a/tools/data-binding/compiler/src/main/java/android/databinding/tool/LayoutBinder.java +++ b/tools/data-binding/compiler/src/main/java/android/databinding/tool/LayoutBinder.java @@ -23,10 +23,14 @@ import android.databinding.tool.expr.Expr; import android.databinding.tool.expr.ExprModel; import android.databinding.tool.expr.IdentifierExpr; import android.databinding.tool.store.ResourceBundle; +import android.databinding.tool.store.ResourceBundle.BindingTargetBundle; import android.databinding.tool.util.ParserHelper; import android.databinding.tool.writer.LayoutBinderWriter; +import android.databinding.tool.writer.WriterPackage; import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -35,6 +39,14 @@ import java.util.Map; * Keeps all information about the bindings per layout file */ public class LayoutBinder { + private static final Comparator<BindingTarget> COMPARE_FIELD_NAME = new Comparator<BindingTarget>() { + @Override + public int compare(BindingTarget first, BindingTarget second) { + final String fieldName1 = WriterPackage.getFieldName(first); + final String fieldName2 = WriterPackage.getFieldName(second); + return fieldName1.compareTo(fieldName2); + } + }; /* * val pkg: String, val projectPackage: String, val baseClassName: String, @@ -69,13 +81,14 @@ public class LayoutBinder { for (Map.Entry<String, String> userImport : mBundle.getImports().entrySet()) { mExprModel.addImport(userImport.getKey(), userImport.getValue()); } - for (ResourceBundle.BindingTargetBundle targetBundle : mBundle.getBindingTargetBundles()) { + for (BindingTargetBundle targetBundle : mBundle.getBindingTargetBundles()) { final BindingTarget bindingTarget = createBindingTarget(targetBundle); for (ResourceBundle.BindingTargetBundle.BindingBundle bindingBundle : targetBundle .getBindingBundleList()) { bindingTarget.addBinding(bindingBundle.getName(), parse(bindingBundle.getExpr())); } } + Collections.sort(mBindingTargets, COMPARE_FIELD_NAME); } public void resolveWhichExpressionsAreUsed() { diff --git a/tools/data-binding/compiler/src/main/java/android/databinding/tool/store/ResourceBundle.java b/tools/data-binding/compiler/src/main/java/android/databinding/tool/store/ResourceBundle.java index db37cc65ebb1..8468efcbfa3b 100644 --- a/tools/data-binding/compiler/src/main/java/android/databinding/tool/store/ResourceBundle.java +++ b/tools/data-binding/compiler/src/main/java/android/databinding/tool/store/ResourceBundle.java @@ -135,6 +135,7 @@ public class ResourceBundle implements Serializable { Set<String> includeBindingIds = new HashSet<String>(); Set<String> viewBindingIds = new HashSet<String>(); Map<String, String> viewTypes = new HashMap<String, String>(); + Map<String, String> includes = new HashMap<String, String>(); L.d("validating ids for %s", bundles.getKey()); for (LayoutFileBundle bundle : bundles.getValue()) { for (BindingTargetBundle target : bundle.mBindingTargetBundles) { @@ -154,11 +155,15 @@ public class ResourceBundle implements Serializable { if (existingType == null) { L.d("assigning %s as %s", target.getId(), target.mFullClassName); viewTypes.put(target.mId, target.mFullClassName); + if (target.isBinder()) { + includes.put(target.mId, target.getIncludedLayout()); + } } else if (!existingType.equals(target.mFullClassName)) { if (target.isBinder()) { L.d("overriding %s as base binder", target.getId()); viewTypes.put(target.mId, "android.databinding.ViewDataBinding"); + includes.put(target.mId, target.getIncludedLayout()); } else { L.d("overriding %s as base view", target.getId()); viewTypes.put(target.mId, "android.view.View"); @@ -172,7 +177,7 @@ public class ResourceBundle implements Serializable { BindingTargetBundle target = bundle.getBindingTargetById(viewType.getKey()); if (target == null) { bundle.createBindingTarget(viewType.getKey(), viewType.getValue(), false, - null, null); + null, null).setIncludedLayout(includes.get(viewType.getKey())); } else { L.d("setting interface type on %s (%s) as %s", target.mId, target.mFullClassName, viewType.getValue()); target.setInterfaceType(viewType.getValue()); diff --git a/tools/data-binding/compiler/src/main/kotlin/android/databinding/tool/writer/LayoutBinderWriter.kt b/tools/data-binding/compiler/src/main/kotlin/android/databinding/tool/writer/LayoutBinderWriter.kt index 64b17c7f43dd..bba5cd9e5ccb 100644 --- a/tools/data-binding/compiler/src/main/kotlin/android/databinding/tool/writer/LayoutBinderWriter.kt +++ b/tools/data-binding/compiler/src/main/kotlin/android/databinding/tool/writer/LayoutBinderWriter.kt @@ -39,6 +39,7 @@ import android.databinding.tool.expr.BracketExpr import android.databinding.tool.reflection.Callable import android.databinding.tool.expr.CastExpr import android.databinding.tool.reflection.ModelAnalyzer +import java.util.HashMap fun String.stripNonJava() = this.split("[^a-zA-Z0-9]").map{ it.trim() }.joinToCamelCaseAsVar() @@ -84,7 +85,15 @@ val BindingTarget.readableUniqueName by Delegates.lazy {(target: BindingTarget) } val BindingTarget.fieldName by Delegates.lazy { (target : BindingTarget) -> - "m${target.readableUniqueName.capitalize()}" + if (target.getFieldName() == null) { + if (target.getId() == null) { + target.setFieldName("m${target.readableUniqueName.capitalize()}") + } else { + target.androidId.stripNonJava(); + target.setFieldName(target.readableUniqueName); + } + } + target.getFieldName(); } val BindingTarget.getterName by Delegates.lazy { (target : BindingTarget) -> @@ -299,6 +308,7 @@ fun <T> FlagSet.mapOr(other : FlagSet, cb : (suffix : String, index : Int) -> T) class LayoutBinderWriter(val layoutBinder : LayoutBinder) { val model = layoutBinder.getModel() + val indices = HashMap<BindingTarget, kotlin.Int>() val mDirtyFlags by Delegates.lazy { val fs = FlagSet(BitSet(), model.getFlagBucketCount()); Arrays.fill(fs.buckets, -1) @@ -330,6 +340,7 @@ class LayoutBinderWriter(val layoutBinder : LayoutBinder) { public fun write() : String { layoutBinder.resolveWhichExpressionsAreUsed() + calculateIndices(); return kcode("package ${layoutBinder.getPackage()};") { nl("import ${layoutBinder.getModulePackage()}.R;") nl("import ${layoutBinder.getModulePackage()}.BR;") @@ -343,7 +354,6 @@ class LayoutBinderWriter(val layoutBinder : LayoutBinder) { tab(declareLog()) tab(declareSetVariable()) tab(variableSettersAndGetters()) - tab(viewGetters()) tab(onFieldChange()) tab(executePendingBindings()) @@ -355,6 +365,16 @@ class LayoutBinderWriter(val layoutBinder : LayoutBinder) { tab("//end") }.generate() } + fun calculateIndices() : Unit { + val numTaggedViews = layoutBinder.getBindingTargets(). + filter{it.isUsed() && !it.isBinder()}.count() + layoutBinder.getBindingTargets().filter{ it.isUsed() && it.getTag() != null }.forEach { + indices.put(it, Integer.parseInt(it.getTag())); + } + layoutBinder.getBindingTargets().filter{ it.isUsed() && it.isBinder()}.withIndex().forEach { + indices.put(it.value, it.index + numTaggedViews); + } + } fun declareIncludeViews() = kcode("") { nl("private static final android.util.SparseIntArray sIncludes;") nl("private static final android.util.SparseIntArray sViewsWithIds;") @@ -364,11 +384,8 @@ class LayoutBinderWriter(val layoutBinder : LayoutBinder) { tab("sIncludes = null;") } else { tab("sIncludes = new android.util.SparseIntArray();") - val numTaggedViews = layoutBinder.getBindingTargets(). - filter{it.isUsed() && !it.isBinder()}.count() - layoutBinder.getBindingTargets().filter{ it.isUsed() && it.isBinder()}.withIndex() - .forEach { - tab("sIncludes.put(${it.value.androidId}, ${it.index + numTaggedViews});") + layoutBinder.getBindingTargets().filter{ it.isUsed() && it.isBinder()}.forEach { + tab("sIncludes.put(${it.androidId}, ${indices.get(it)});") } } val hasViewsWithIds = layoutBinder.getBindingTargets().firstOrNull{ it.isUsed() && !it.supportsTag()} != null @@ -378,24 +395,39 @@ class LayoutBinderWriter(val layoutBinder : LayoutBinder) { tab("sViewsWithIds = new android.util.SparseIntArray();") layoutBinder.getBindingTargets().filter{ it.isUsed() && !it.supportsTag() }. forEach { - tab("sViewsWithIds.put(${it.androidId}, ${it.getTag()});") + tab("sViewsWithIds.put(${it.androidId}, ${indices.get(it)});") } } } nl("}") } fun declareConstructor() = kcode("") { - nl("public ${className}(View root) {") { - tab("super(root, ${model.getObservables().size()});") - val viewCount = layoutBinder.getBindingTargets().filter{it.isUsed()}.count() - tab("View[] views = new View[${viewCount}];") - tab("mapTaggedChildViews(root, views, sIncludes, sViewsWithIds);"); + nl("private ${className}(View root, View[] views) {") { + tab("super(root, ${model.getObservables().size()}") { + layoutBinder.getBindingTargets().filter{it.getId() != null}.forEach { + val index = indices.get(it) + if (!it.isUsed()) { + tab(", null") + } else if (index == null) { + tab(", (${it.getInterfaceType()}) root") + } else if (it.isBinder()) { + tab(", ${it.getViewClass()}.bind(views[${index}])") + } else { + tab(", (${it.getInterfaceType()}) views[${index}]") + } + } + tab(");") + } val taggedViews = layoutBinder.getBindingTargets().filter{it.isUsed() && !it.isBinder()} taggedViews.forEach { if (it.getTag() == null) { - tab("this.${it.fieldName} = (${it.getViewClass()}) root;") + if (it.getId() == null) { + tab("this.${it.fieldName} = (${it.getViewClass()}) root;") + } } else { - tab("this.${it.fieldName} = (${it.getViewClass()}) views[${it.getTag()}];") + if (it.getId() == null) { + tab("this.${it.fieldName} = (${it.getViewClass()}) views[${it.getTag()}];") + } if (it.supportsTag()) { val originalTag = it.getOriginalTag(); var tagValue = "null" @@ -415,12 +447,13 @@ class LayoutBinderWriter(val layoutBinder : LayoutBinder) { } } } - val taggedCount = taggedViews.count() - layoutBinder.getBindingTargets().filter{it.isUsed() && it.isBinder()}.withIndex() - .forEach { - tab("this.${it.value.fieldName} = ${it.value.getViewClass()}.bind(views[${it.index + taggedCount}]);") - } tab("invalidateAll();"); + nl("}") + } + nl("") + nl("public ${className}(View root) {") { + val viewCount = layoutBinder.getBindingTargets().filter{it.isUsed()}.count() + tab("this(root, mapChildViews(root, ${viewCount}, sIncludes, sViewsWithIds));") } nl("}") } @@ -501,8 +534,8 @@ class LayoutBinderWriter(val layoutBinder : LayoutBinder) { } fun onFieldChange() = kcode("") { - tab("@Override") - tab("protected boolean onFieldChange(int localFieldId, Object object, int fieldId) {") { + nl("@Override") + nl("protected boolean onFieldChange(int localFieldId, Object object, int fieldId) {") { tab("switch (localFieldId) {") { model.getObservables().forEach { tab("case ${it.getId()} :") { @@ -513,10 +546,11 @@ class LayoutBinderWriter(val layoutBinder : LayoutBinder) { tab("}") tab("return false;") } - tab("}") + nl("}") + nl("") model.getObservables().forEach { - tab("private boolean ${it.onChangeName}(${it.getResolvedType().toJavaCode()} ${it.readableUniqueName}, int fieldId) {") { + nl("private boolean ${it.onChangeName}(${it.getResolvedType().toJavaCode()} ${it.readableUniqueName}, int fieldId) {") { tab("switch (fieldId) {", { val accessedFields: List<FieldAccessExpr> = it.getParents().filterIsInstance(javaClass<FieldAccessExpr>()) accessedFields.filter { it.canBeInvalidated() } @@ -543,28 +577,14 @@ class LayoutBinderWriter(val layoutBinder : LayoutBinder) { tab("}") tab("return false;") } - tab("}") + nl("}") + nl("") } } fun declareViews() = kcode("// views") { - layoutBinder.getBindingTargets().filter{it.isUsed()}.forEach { - nl("private final ${it.getViewClass()} ${it.fieldName};") - } - } - - fun viewGetters() = kcode("// view getters") { - layoutBinder.getBindingTargets().filter{it.getId() != null}.forEach { - nl("@Override") - nl("public ${it.getInterfaceType()} ${it.getterName}() {") { - if (it.isUsed()) { - tab("return ${it.fieldName};") - } else { - tab("return null;") - } - - } - nl("}") + layoutBinder.getBindingTargets().filter {it.isUsed() && (it.getId() == null)}.forEach { + nl("private final ${it.getInterfaceType()} ${it.fieldName};") } } @@ -638,7 +658,14 @@ class LayoutBinderWriter(val layoutBinder : LayoutBinder) { }) {") { it.value.forEach { binding -> tab("// api target ${binding.getMinApi()}") - val bindingCode = binding.toJavaCode(binding.getTarget().fieldName, binding.getExpr().toCode().generate()) + val fieldName : String + if (binding.getTarget().getViewClass(). + equals(binding.getTarget().getInterfaceType())) { + fieldName = "this.${binding.getTarget().fieldName}" + } else { + fieldName = "((${binding.getTarget().getViewClass()}) this.${binding.getTarget().fieldName})" + } + val bindingCode = binding.toJavaCode(fieldName, binding.getExpr().toCode().generate()) if (binding.getMinApi() > 1) { tab("if(getBuildSdkInt() >= ${binding.getMinApi()}) {") { tab("$bindingCode;") @@ -732,8 +759,20 @@ class LayoutBinderWriter(val layoutBinder : LayoutBinder) { nl("import android.databinding.DataBindingUtil;") nl("import android.databinding.ViewDataBinding;") nl("public abstract class ${baseClassName} extends ViewDataBinding {") - tab("protected ${baseClassName}(android.view.View root, int localFieldCount) {") { - tab("super(root, localFieldCount);") + layoutBinder.getBindingTargets().filter{it.getId() != null}.forEach { + tab("public final ${it.getInterfaceType()} ${it.fieldName};") + } + nl("") + tab("protected ${baseClassName}(android.view.View root_, int localFieldCount") { + layoutBinder.getBindingTargets().filter{it.getId() != null}.forEach { + tab(", ${it.getInterfaceType()} ${it.readableUniqueName}") + } + } + tab(") {") { + tab("super(root_, localFieldCount);") + layoutBinder.getBindingTargets().filter{it.getId() != null}.forEach { + tab("this.${it.fieldName} = ${it.readableUniqueName};") + } } tab("}") nl("") @@ -745,10 +784,6 @@ class LayoutBinderWriter(val layoutBinder : LayoutBinder) { tab("public abstract void ${it.setterName}(${type} ${it.readableUniqueName});") } } - layoutBinder.getBindingTargets().filter{ it.getId() != null }.forEach { - tab("public abstract ${it.getInterfaceType()} ${it.getterName}();") - } - nl("") tab("public static ${baseClassName} inflate(android.view.ViewGroup root) {") { tab("return DataBindingUtil.<${baseClassName}>inflate(root.getContext(), ${layoutBinder.getModulePackage()}.R.layout.${layoutBinder.getLayoutname()}, root, true);") } diff --git a/tools/data-binding/databinding.properties b/tools/data-binding/databinding.properties index d0c3576c2297..0bda1db3a44c 100644 --- a/tools/data-binding/databinding.properties +++ b/tools/data-binding/databinding.properties @@ -1,5 +1,5 @@ # global settings for projects -kotlinVersion = 0.10.195 +kotlinVersion = 0.11.91 releaseVersion = 0.3 snapshotVersion = 0.3-SNAPSHOT androidPluginVersion = 1.0.1 diff --git a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/AbsListViewBindingAdapterTest.java b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/AbsListViewBindingAdapterTest.java index 4fd2a6645812..8de75453da0f 100644 --- a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/AbsListViewBindingAdapterTest.java +++ b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/AbsListViewBindingAdapterTest.java @@ -36,7 +36,7 @@ public class AbsListViewBindingAdapterTest @Override protected void setUp() throws Exception { super.setUp(); - mView = mBinder.getView(); + mView = mBinder.view; } public void testListSelector() throws Throwable { diff --git a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/AbsSeekBarBindingAdapterTest.java b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/AbsSeekBarBindingAdapterTest.java index 0d133e30e9d9..7484dc5f0a3b 100644 --- a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/AbsSeekBarBindingAdapterTest.java +++ b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/AbsSeekBarBindingAdapterTest.java @@ -34,7 +34,7 @@ public class AbsSeekBarBindingAdapterTest @Override protected void setUp() throws Exception { super.setUp(); - mView = mBinder.getView(); + mView = mBinder.view; } public void testThumbTint() throws Throwable { diff --git a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/AbsSpinnerBindingAdapterTest.java b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/AbsSpinnerBindingAdapterTest.java index ec55980fd552..498322db37c2 100644 --- a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/AbsSpinnerBindingAdapterTest.java +++ b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/AbsSpinnerBindingAdapterTest.java @@ -35,7 +35,7 @@ public class AbsSpinnerBindingAdapterTest @Override protected void setUp() throws Exception { super.setUp(); - mView = mBinder.getView(); + mView = mBinder.view; } public void testEntries() throws Throwable { diff --git a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/AutoCompleteTextViewBindingAdapterTest.java b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/AutoCompleteTextViewBindingAdapterTest.java index 60067a2e28c8..5ca9a6f42c35 100644 --- a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/AutoCompleteTextViewBindingAdapterTest.java +++ b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/AutoCompleteTextViewBindingAdapterTest.java @@ -36,7 +36,7 @@ public class AutoCompleteTextViewBindingAdapterTest extends @Override protected void setUp() throws Exception { super.setUp(); - mView = mBinder.getView(); + mView = mBinder.view; } public void testCompletionThreshold() throws Throwable { diff --git a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/BaseDataBinderTest.java b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/BaseDataBinderTest.java index 16a94561584f..ff85523098ae 100644 --- a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/BaseDataBinderTest.java +++ b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/BaseDataBinderTest.java @@ -84,10 +84,14 @@ public class BaseDataBinderTest<T extends ViewDataBinding> assertEquals(klass, mBinder.getClass().getDeclaredField(fieldName).getType()); } + protected void assertPublicField(Class<?> klass, String fieldName) throws NoSuchFieldException { + assertEquals(klass, mBinder.getClass().getField(fieldName).getType()); + } + protected void assertNoField(String fieldName) { Exception[] ex = new Exception[1]; try { - mBinder.getClass().getDeclaredField(fieldName); + mBinder.getClass().getField(fieldName); } catch (NoSuchFieldException e) { ex[0] = e; } diff --git a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/BasicBindingTest.java b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/BasicBindingTest.java index d8a1aec3e5bc..303129fee619 100644 --- a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/BasicBindingTest.java +++ b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/BasicBindingTest.java @@ -70,6 +70,6 @@ public class BasicBindingTest extends BaseDataBinderTest<BasicBindingBinding> { private void rebindAndAssert(String text) { mBinder.executePendingBindings(); - assertEquals(text, mBinder.getTextView().getText().toString()); + assertEquals(text, mBinder.textView.getText().toString()); } } diff --git a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/BasicDependantBindingTest.java b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/BasicDependantBindingTest.java index 4adfd2dd1c11..ab9091d11560 100644 --- a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/BasicDependantBindingTest.java +++ b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/BasicDependantBindingTest.java @@ -71,10 +71,10 @@ public class BasicDependantBindingTest extends BaseDataBinderTest<BasicDependant private void assertValues(String textView1, String textView2, String mergedView1, String mergedView2, String rawMerge) { - assertEquals(textView1, mBinder.getTextView1().getText().toString()); - assertEquals(textView2, mBinder.getTextView2().getText().toString()); - assertEquals(mergedView1, mBinder.getMergedTextView1().getText().toString()); - assertEquals(mergedView2, mBinder.getMergedTextView2().getText().toString()); - assertEquals(rawMerge, mBinder.getRawStringMerge().getText().toString()); + assertEquals(textView1, mBinder.textView1.getText().toString()); + assertEquals(textView2, mBinder.textView2.getText().toString()); + assertEquals(mergedView1, mBinder.mergedTextView1.getText().toString()); + assertEquals(mergedView2, mBinder.mergedTextView2.getText().toString()); + assertEquals(rawMerge, mBinder.rawStringMerge.getText().toString()); } } diff --git a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/BracketTest.java b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/BracketTest.java index dac5fcd4ef9d..c8bc224f2bf5 100644 --- a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/BracketTest.java +++ b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/BracketTest.java @@ -66,11 +66,11 @@ public class BracketTest extends BaseDataBinderTest<BracketTestBinding> { @UiThreadTest public void testBrackets() { - assertEquals("Hello World", mBinder.getArrayText().getText().toString()); - assertEquals("Hello", mBinder.getSparseArrayText().getText().toString()); - assertEquals("World", mBinder.getLongSparseArrayText().getText().toString()); - assertEquals("100", mBinder.getSparseIntArrayText().getText().toString()); - assertEquals("true", mBinder.getSparseBooleanArrayText().getText().toString()); - assertEquals("5", mBinder.getSparseLongArrayText().getText().toString()); + assertEquals("Hello World", mBinder.arrayText.getText().toString()); + assertEquals("Hello", mBinder.sparseArrayText.getText().toString()); + assertEquals("World", mBinder.longSparseArrayText.getText().toString()); + assertEquals("100", mBinder.sparseIntArrayText.getText().toString()); + assertEquals("true", mBinder.sparseBooleanArrayText.getText().toString()); + assertEquals("5", mBinder.sparseLongArrayText.getText().toString()); } } diff --git a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/CastTest.java b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/CastTest.java index e4a04f0d8230..13013fbe0f1f 100644 --- a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/CastTest.java +++ b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/CastTest.java @@ -56,7 +56,7 @@ public class CastTest extends BaseDataBinderTest<CastTestBinding> { @UiThreadTest public void testCast() throws Throwable { - assertEquals("hello", mBinder.getTextView0().getText().toString()); - assertEquals("world", mBinder.getTextView1().getText().toString()); + assertEquals("hello", mBinder.textView0.getText().toString()); + assertEquals("world", mBinder.textView1.getText().toString()); } } diff --git a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/CheckedTextViewBindingAdapterTest.java b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/CheckedTextViewBindingAdapterTest.java index 3baa1b72f83b..e0a9aaa08f3c 100644 --- a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/CheckedTextViewBindingAdapterTest.java +++ b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/CheckedTextViewBindingAdapterTest.java @@ -35,7 +35,7 @@ public class CheckedTextViewBindingAdapterTest extends @Override protected void setUp() throws Exception { super.setUp(); - mView = mBinder.getView(); + mView = mBinder.view; } public void testView() throws Throwable { diff --git a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/CompoundButtonBindingAdapterTest.java b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/CompoundButtonBindingAdapterTest.java index 45c66ba4b65c..ffaf5dbfd7a0 100644 --- a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/CompoundButtonBindingAdapterTest.java +++ b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/CompoundButtonBindingAdapterTest.java @@ -33,7 +33,7 @@ public class CompoundButtonBindingAdapterTest extends @Override protected void setUp() throws Exception { super.setUp(); - mView = mBinder.getView(); + mView = mBinder.view; } public void testCompoundButton() throws Throwable { diff --git a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ConditionalBindingTest.java b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ConditionalBindingTest.java index c01165dd2043..78c9656bd319 100644 --- a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ConditionalBindingTest.java +++ b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ConditionalBindingTest.java @@ -26,7 +26,7 @@ public class ConditionalBindingTest extends BaseDataBinderTest<ConditionalBindin mBinder.setCond1(cond1); mBinder.setCond2(cond2); mBinder.executePendingBindings(); - final String text = mBinder.getTextView().getText().toString(); + final String text = mBinder.textView.getText().toString(); assertEquals(cond1 && cond2, "a".equals(text)); assertEquals(cond1 && !cond2, "b".equals(text)); assertEquals(!cond1, "c".equals(text)); diff --git a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/FindMethodTest.java b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/FindMethodTest.java index 634dd722011d..6c5b0b8d79a3 100644 --- a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/FindMethodTest.java +++ b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/FindMethodTest.java @@ -29,67 +29,67 @@ public class FindMethodTest } public void testNoArg() throws Throwable { - TextView textView = mBinder.getTextView6(); + TextView textView = mBinder.textView6; assertEquals("no arg", textView.getText().toString()); } public void testIntArg() throws Throwable { - TextView textView = mBinder.getTextView0(); + TextView textView = mBinder.textView0; assertEquals("1", textView.getText().toString()); } public void testFloatArg() throws Throwable { - TextView textView = mBinder.getTextView1(); + TextView textView = mBinder.textView1; assertEquals("1.25", textView.getText().toString()); } public void testStringArg() throws Throwable { - TextView textView = mBinder.getTextView2(); + TextView textView = mBinder.textView2; assertEquals("hello", textView.getText().toString()); } public void testBoxedArg() throws Throwable { - TextView textView = mBinder.getTextView3(); + TextView textView = mBinder.textView3; assertEquals("1", textView.getText().toString()); } public void testInheritedMethod() throws Throwable { - TextView textView = mBinder.getTextView4(); + TextView textView = mBinder.textView4; assertEquals("base", textView.getText().toString()); } public void testInheritedMethodInt() throws Throwable { - TextView textView = mBinder.getTextView5(); + TextView textView = mBinder.textView5; assertEquals("base 2", textView.getText().toString()); } public void testStaticMethod() throws Throwable { - TextView textView = mBinder.getTextView7(); + TextView textView = mBinder.textView7; assertEquals("world", textView.getText().toString()); } public void testStaticField() throws Throwable { - TextView textView = mBinder.getTextView8(); + TextView textView = mBinder.textView8; assertEquals("hello world", textView.getText().toString()); } public void testImportStaticMethod() throws Throwable { - TextView textView = mBinder.getTextView9(); + TextView textView = mBinder.textView9; assertEquals("world", textView.getText().toString()); } public void testImportStaticField() throws Throwable { - TextView textView = mBinder.getTextView10(); + TextView textView = mBinder.textView10; assertEquals("hello world", textView.getText().toString()); } public void testAliasStaticMethod() throws Throwable { - TextView textView = mBinder.getTextView11(); + TextView textView = mBinder.textView11; assertEquals("world", textView.getText().toString()); } public void testAliasStaticField() throws Throwable { - TextView textView = mBinder.getTextView12(); + TextView textView = mBinder.textView12; assertEquals("hello world", textView.getText().toString()); } @@ -97,17 +97,17 @@ public class FindMethodTest public void testImports() throws Throwable { mBinder.setObj2(new FindMethodBindingObject.Bar<String>()); mBinder.executePendingBindings(); - TextView textView = mBinder.getTextView15(); + TextView textView = mBinder.textView15; assertEquals("hello", textView.getText().toString()); } @UiThreadTest public void testConfusingMethods() throws Throwable { - assertEquals("1", mBinder.getTextView16().getText().toString()); - assertEquals("1", mBinder.getTextView17().getText().toString()); - assertEquals("hello", mBinder.getTextView18().getText().toString()); - assertEquals("yay", mBinder.getTextView19().getText().toString()); - assertEquals("hello", mBinder.getTextView20().getText().toString()); - assertEquals("hello", mBinder.getTextView21().getText().toString()); + assertEquals("1", mBinder.textView16.getText().toString()); + assertEquals("1", mBinder.textView17.getText().toString()); + assertEquals("hello", mBinder.textView18.getText().toString()); + assertEquals("yay", mBinder.textView19.getText().toString()); + assertEquals("hello", mBinder.textView20.getText().toString()); + assertEquals("hello", mBinder.textView21.getText().toString()); } } diff --git a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/FrameLayoutBindingAdapterTest.java b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/FrameLayoutBindingAdapterTest.java index 94432e44cfdb..f0c36ac4f744 100644 --- a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/FrameLayoutBindingAdapterTest.java +++ b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/FrameLayoutBindingAdapterTest.java @@ -34,7 +34,7 @@ public class FrameLayoutBindingAdapterTest @Override protected void setUp() throws Exception { super.setUp(); - mView = mBinder.getView(); + mView = mBinder.view; } public void testTint() throws Throwable { diff --git a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ImageViewBindingAdapterTest.java b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ImageViewBindingAdapterTest.java index 1b5ce9b26ec5..1190ad5d8710 100644 --- a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ImageViewBindingAdapterTest.java +++ b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ImageViewBindingAdapterTest.java @@ -33,7 +33,7 @@ public class ImageViewBindingAdapterTest @Override protected void setUp() throws Exception { super.setUp(); - mView = mBinder.getView(); + mView = mBinder.view; } public void testImageView() throws Throwable { diff --git a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/LandDataBinderTest.java b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/LandDataBinderTest.java deleted file mode 100644 index 69b629eee71b..000000000000 --- a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/LandDataBinderTest.java +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright (C) 2015 The Android Open Source Project - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.databinding.testapp; - -public class LandDataBinderTest { - -} diff --git a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/LeakTest.java b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/LeakTest.java index bb0576d574d7..aa76bea959b3 100644 --- a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/LeakTest.java +++ b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/LeakTest.java @@ -86,7 +86,7 @@ public class LeakTest extends ActivityInstrumentationTestCase2<TestActivity> { runTestOnUiThread(new Runnable() { @Override public void run() { - assertEquals("hello world", binding.getTextView().getText().toString()); + assertEquals("hello world", binding.textView.getText().toString()); getActivity().setContentView(binding.getRoot()); binding.getRoot().postOnAnimation(watcher); } @@ -97,7 +97,7 @@ public class LeakTest extends ActivityInstrumentationTestCase2<TestActivity> { runTestOnUiThread(new Runnable() { @Override public void run() { - assertEquals("goodbye world", binding.getTextView().getText().toString()); + assertEquals("goodbye world", binding.textView.getText().toString()); } }); } diff --git a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/LinearLayoutBindingAdapterTest.java b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/LinearLayoutBindingAdapterTest.java index 8b958d1bb3ae..1e972867d988 100644 --- a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/LinearLayoutBindingAdapterTest.java +++ b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/LinearLayoutBindingAdapterTest.java @@ -34,7 +34,7 @@ public class LinearLayoutBindingAdapterTest @Override protected void setUp() throws Exception { super.setUp(); - mView = mBinder.getView(); + mView = mBinder.view; } public void testMeasureWithLargestChild() throws Throwable { diff --git a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/NewApiTest.java b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/NewApiTest.java index db2d145966d6..1510309c71eb 100644 --- a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/NewApiTest.java +++ b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/NewApiTest.java @@ -34,15 +34,15 @@ public class NewApiTest extends BaseDataBinderTest<NewApiLayoutBinding> { mBinder.setName("foo"); mBinder.setChildren(new ArrayList<View>()); mBinder.executePendingBindings(); - assertEquals("foo", mBinder.getTextView().getText().toString()); - assertEquals(3f, mBinder.getTextView().getElevation()); + assertEquals("foo", mBinder.textView.getText().toString()); + assertEquals(3f, mBinder.textView.getElevation()); } @UiThreadTest public void testSetElevationOlderAPI() { DataBinderTrojan.setBuildSdkInt(1); try { - TextView textView = mBinder.getTextView(); + TextView textView = mBinder.textView; float originalElevation = textView.getElevation(); mBinder.setElevation(3); mBinder.setName("foo2"); @@ -60,7 +60,7 @@ public class NewApiTest extends BaseDataBinderTest<NewApiLayoutBinding> { mBinder.setChildren(views); mBinder.executePendingBindings(); assertEquals(1, views.size()); - assertSame(mBinder.getTextView(), views.get(0)); + assertSame(mBinder.textView, views.get(0)); } @UiThreadTest diff --git a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ObservableFieldTest.java b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ObservableFieldTest.java index 4803ee60f0fc..35e77a5691fd 100644 --- a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ObservableFieldTest.java +++ b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ObservableFieldTest.java @@ -45,7 +45,7 @@ public class ObservableFieldTest extends BaseDataBinderTest<ObservableFieldTestB @UiThreadTest public void testBoolean() { - TextView view = mBinder.getBField(); + TextView view = mBinder.bField; assertEquals("false", view.getText()); mObj.bField.set(true); @@ -56,7 +56,7 @@ public class ObservableFieldTest extends BaseDataBinderTest<ObservableFieldTestB @UiThreadTest public void testByte() { - TextView view = mBinder.getTField(); + TextView view = mBinder.tField; assertEquals("0", view.getText()); mObj.tField.set((byte) 1); @@ -67,7 +67,7 @@ public class ObservableFieldTest extends BaseDataBinderTest<ObservableFieldTestB @UiThreadTest public void testShort() { - TextView view = mBinder.getSField(); + TextView view = mBinder.sField; assertEquals("0", view.getText()); mObj.sField.set((short) 1); @@ -78,7 +78,7 @@ public class ObservableFieldTest extends BaseDataBinderTest<ObservableFieldTestB @UiThreadTest public void testChar() { - TextView view = mBinder.getCField(); + TextView view = mBinder.cField; assertEquals("\u0000", view.getText()); mObj.cField.set('A'); @@ -89,7 +89,7 @@ public class ObservableFieldTest extends BaseDataBinderTest<ObservableFieldTestB @UiThreadTest public void testInt() { - TextView view = mBinder.getIField(); + TextView view = mBinder.iField; assertEquals("0", view.getText()); mObj.iField.set(1); @@ -100,7 +100,7 @@ public class ObservableFieldTest extends BaseDataBinderTest<ObservableFieldTestB @UiThreadTest public void testLong() { - TextView view = mBinder.getLField(); + TextView view = mBinder.lField; assertEquals("0", view.getText()); mObj.lField.set(1); @@ -111,7 +111,7 @@ public class ObservableFieldTest extends BaseDataBinderTest<ObservableFieldTestB @UiThreadTest public void testFloat() { - TextView view = mBinder.getFField(); + TextView view = mBinder.fField; assertEquals("0.0", view.getText()); mObj.fField.set(1); @@ -122,7 +122,7 @@ public class ObservableFieldTest extends BaseDataBinderTest<ObservableFieldTestB @UiThreadTest public void testDouble() { - TextView view = mBinder.getDField(); + TextView view = mBinder.dField; assertEquals("0.0", view.getText()); mObj.dField.set(1); @@ -133,7 +133,7 @@ public class ObservableFieldTest extends BaseDataBinderTest<ObservableFieldTestB @UiThreadTest public void testObject() { - TextView view = mBinder.getOField(); + TextView view = mBinder.oField; assertEquals("Hello", view.getText()); mObj.oField.set("World"); diff --git a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ObservableWithNotBindableFieldObjectTest.java b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ObservableWithNotBindableFieldObjectTest.java index 3d8579a7242a..47c572291424 100644 --- a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ObservableWithNotBindableFieldObjectTest.java +++ b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ObservableWithNotBindableFieldObjectTest.java @@ -32,9 +32,9 @@ public class ObservableWithNotBindableFieldObjectTest extends BaseDataBinderTest ObservableWithNotBindableFieldObject obj = new ObservableWithNotBindableFieldObject(); mBinder.setObj(obj); mBinder.executePendingBindings(); - assertEquals("", mBinder.getTextView().getText().toString()); + assertEquals("", mBinder.textView.getText().toString()); obj.update("100"); mBinder.executePendingBindings(); - assertEquals("100", mBinder.getTextView().getText().toString()); + assertEquals("100", mBinder.textView.getText().toString()); } } diff --git a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ProgressBarBindingAdapterTest.java b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ProgressBarBindingAdapterTest.java index 92eec7b8bac6..3dfc52c71049 100644 --- a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ProgressBarBindingAdapterTest.java +++ b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ProgressBarBindingAdapterTest.java @@ -34,7 +34,7 @@ public class ProgressBarBindingAdapterTest @Override protected void setUp() throws Exception { super.setUp(); - mView = mBinder.getView(); + mView = mBinder.view; } public void testTint() throws Throwable { diff --git a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/RadioGroupBindingAdapterTest.java b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/RadioGroupBindingAdapterTest.java index f9cc374cb47f..83d562279e5f 100644 --- a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/RadioGroupBindingAdapterTest.java +++ b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/RadioGroupBindingAdapterTest.java @@ -33,7 +33,7 @@ public class RadioGroupBindingAdapterTest @Override protected void setUp() throws Exception { super.setUp(); - mView = mBinder.getView(); + mView = mBinder.view; } public void testRadioGroup() throws Throwable { diff --git a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ResourceTest.java b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ResourceTest.java index ed1fb79f5499..4d6a906748fc 100644 --- a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ResourceTest.java +++ b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ResourceTest.java @@ -48,7 +48,7 @@ public class ResourceTest extends BaseDataBinderTest<ResourceTestBinding> { @UiThreadTest public void testStringFormat() throws Throwable { - TextView view = mBinder.getTextView0(); + TextView view = mBinder.textView0; assertEquals("Mrs. Doubtfire", view.getText().toString()); mBinder.setTitle("Mr."); @@ -58,7 +58,7 @@ public class ResourceTest extends BaseDataBinderTest<ResourceTestBinding> { @UiThreadTest public void testQuantityString() throws Throwable { - TextView view = mBinder.getTextView1(); + TextView view = mBinder.textView1; assertEquals("oranges", view.getText().toString()); mBinder.setCount(1); @@ -68,19 +68,19 @@ public class ResourceTest extends BaseDataBinderTest<ResourceTestBinding> { @UiThreadTest public void testFractionNoParameters() throws Throwable { - TextView view = mBinder.getFractionNoParameters(); + TextView view = mBinder.fractionNoParameters; assertEquals("1.5", view.getText().toString()); } @UiThreadTest public void testFractionOneParameter() throws Throwable { - TextView view = mBinder.getFractionOneParameter(); + TextView view = mBinder.fractionOneParameter; assertEquals("3.0", view.getText().toString()); } @UiThreadTest public void testFractionTwoParameters() throws Throwable { - TextView view = mBinder.getFractionTwoParameters(); + TextView view = mBinder.fractionTwoParameters; assertEquals("9.0", view.getText().toString()); } } diff --git a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/SpinnerBindingAdapterTest.java b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/SpinnerBindingAdapterTest.java index 63bc5e77cf7b..7471f978f166 100644 --- a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/SpinnerBindingAdapterTest.java +++ b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/SpinnerBindingAdapterTest.java @@ -35,7 +35,7 @@ public class SpinnerBindingAdapterTest @Override protected void setUp() throws Exception { super.setUp(); - mView = mBinder.getView(); + mView = mBinder.view; } public void testSpinner() throws Throwable { diff --git a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/SwitchBindingAdapterTest.java b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/SwitchBindingAdapterTest.java index a10a57fa25f0..d747ae4b62f5 100644 --- a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/SwitchBindingAdapterTest.java +++ b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/SwitchBindingAdapterTest.java @@ -35,7 +35,7 @@ public class SwitchBindingAdapterTest @Override protected void setUp() throws Exception { super.setUp(); - mView = mBinder.getView(); + mView = mBinder.view; } public void testSwitch() throws Throwable { diff --git a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/TabWidgetBindingAdapterTest.java b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/TabWidgetBindingAdapterTest.java index d9a8fe0a5732..6e1f27c226e7 100644 --- a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/TabWidgetBindingAdapterTest.java +++ b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/TabWidgetBindingAdapterTest.java @@ -35,7 +35,7 @@ public class TabWidgetBindingAdapterTest @Override protected void setUp() throws Exception { super.setUp(); - mView = mBinder.getView(); + mView = mBinder.view; } public void testStrip() throws Throwable { diff --git a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/TableLayoutBindingAdapterTest.java b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/TableLayoutBindingAdapterTest.java index fc18596d52f3..20bb019cddfa 100644 --- a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/TableLayoutBindingAdapterTest.java +++ b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/TableLayoutBindingAdapterTest.java @@ -35,7 +35,7 @@ public class TableLayoutBindingAdapterTest @Override protected void setUp() throws Exception { super.setUp(); - mView = mBinder.getView(); + mView = mBinder.view; } public void testDivider() throws Throwable { diff --git a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/TextViewBindingAdapterTest.java b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/TextViewBindingAdapterTest.java index 4c89120f1ac1..8672e90acae7 100644 --- a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/TextViewBindingAdapterTest.java +++ b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/TextViewBindingAdapterTest.java @@ -41,7 +41,7 @@ public class TextViewBindingAdapterTest } public void testNumeric() throws Throwable { - TextView view = mBinder.getNumericText(); + TextView view = mBinder.numericText; assertTrue(view.getKeyListener() instanceof DigitsKeyListener); DigitsKeyListener listener = (DigitsKeyListener) view.getKeyListener(); assertEquals(getExpectedNumericType(), listener.getInputType()); @@ -66,7 +66,7 @@ public class TextViewBindingAdapterTest public void testDrawables() throws Throwable { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { - TextView view = mBinder.getTextDrawableNormal(); + TextView view = mBinder.textDrawableNormal; assertEquals(mBindingObject.getDrawableLeft(), ((ColorDrawable) view.getCompoundDrawables()[0]).getColor()); assertEquals(mBindingObject.getDrawableTop(), @@ -91,7 +91,7 @@ public class TextViewBindingAdapterTest public void testDrawableStartEnd() throws Throwable { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { - TextView view = mBinder.getTextDrawableStartEnd(); + TextView view = mBinder.textDrawableStartEnd; assertEquals(mBindingObject.getDrawableStart(), ((ColorDrawable) view.getCompoundDrawablesRelative()[0]).getColor()); assertEquals(mBindingObject.getDrawableEnd(), @@ -107,7 +107,7 @@ public class TextViewBindingAdapterTest } public void testSimpleProperties() throws Throwable { - TextView view = mBinder.getTextView(); + TextView view = mBinder.textView; assertEquals(mBindingObject.getAutoLink(), view.getAutoLinkMask()); assertEquals(mBindingObject.getDrawablePadding(), view.getCompoundDrawablePadding()); @@ -220,7 +220,7 @@ public class TextViewBindingAdapterTest } public void testAllCaps() throws Throwable { - TextView view = mBinder.getTextAllCaps(); + TextView view = mBinder.textAllCaps; assertEquals(mBindingObject.isTextAllCaps(), view.getTransformationMethod() != null); if (view.getTransformationMethod() != null) { @@ -238,7 +238,7 @@ public class TextViewBindingAdapterTest } public void testBufferType() throws Throwable { - TextView view = mBinder.getTextBufferType(); + TextView view = mBinder.textBufferType; assertEquals(mBindingObject.getBufferType(), getBufferType(view)); changeValues(); @@ -257,14 +257,14 @@ public class TextViewBindingAdapterTest } public void testInputType() throws Throwable { - TextView view = mBinder.getTextInputType(); + TextView view = mBinder.textInputType; assertEquals(mBindingObject.getInputType(), view.getInputType()); changeValues(); assertEquals(mBindingObject.getInputType(), view.getInputType()); } public void testDigits() throws Throwable { - TextView view = mBinder.getTextDigits(); + TextView view = mBinder.textDigits; assertEquals(mBindingObject.getDigits(), getDigits(view)); changeValues(); assertEquals(mBindingObject.getDigits(), getDigits(view)); @@ -283,7 +283,7 @@ public class TextViewBindingAdapterTest } public void testPhoneNumber() throws Throwable { - TextView textView = mBinder.getTextPhoneNumber(); + TextView textView = mBinder.textPhoneNumber; assertEquals(mBindingObject.isPhoneNumber(), isPhoneNumber(textView)); changeValues(); assertEquals(mBindingObject.isPhoneNumber(), isPhoneNumber(textView)); @@ -295,7 +295,7 @@ public class TextViewBindingAdapterTest } public void testInputMethod() throws Throwable { - TextView textView = mBinder.getTextInputMethod(); + TextView textView = mBinder.textInputMethod; assertTrue(TextViewBindingObject.KeyListener1.class.isInstance(textView.getKeyListener())); changeValues(); assertTrue(TextViewBindingObject.KeyListener2.class.isInstance(textView.getKeyListener())); diff --git a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ViewBindingAdapterTest.java b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ViewBindingAdapterTest.java index 6570909de4aa..ae3d2366eeca 100644 --- a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ViewBindingAdapterTest.java +++ b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ViewBindingAdapterTest.java @@ -35,7 +35,7 @@ public class ViewBindingAdapterTest extends BindingAdapterTestBase<ViewAdapterTe } public void testPadding() throws Throwable { - View view = mBinder.getPadding(); + View view = mBinder.padding; assertEquals(mBindingObject.getPadding(), view.getPaddingBottom()); assertEquals(mBindingObject.getPadding(), view.getPaddingTop()); assertEquals(mBindingObject.getPadding(), view.getPaddingRight()); @@ -50,7 +50,7 @@ public class ViewBindingAdapterTest extends BindingAdapterTestBase<ViewAdapterTe } public void testPaddingLeftRight() throws Throwable { - View view = mBinder.getPaddingLeftRight(); + View view = mBinder.paddingLeftRight; assertEquals(mBindingObject.getPaddingLeft(), view.getPaddingLeft()); assertEquals(mBindingObject.getPaddingRight(), view.getPaddingRight()); @@ -62,7 +62,7 @@ public class ViewBindingAdapterTest extends BindingAdapterTestBase<ViewAdapterTe public void testPaddingStartEnd() throws Throwable { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { - View view = mBinder.getPaddingStartEnd(); + View view = mBinder.paddingStartEnd; assertEquals(mBindingObject.getPaddingStart(), view.getPaddingStart()); assertEquals(mBindingObject.getPaddingEnd(), view.getPaddingEnd()); @@ -74,7 +74,7 @@ public class ViewBindingAdapterTest extends BindingAdapterTestBase<ViewAdapterTe } public void testPaddingTopBottom() throws Throwable { - View view = mBinder.getPaddingTopBottom(); + View view = mBinder.paddingTopBottom; assertEquals(mBindingObject.getPaddingTop(), view.getPaddingTop()); assertEquals(mBindingObject.getPaddingBottom(), view.getPaddingBottom()); @@ -86,7 +86,7 @@ public class ViewBindingAdapterTest extends BindingAdapterTestBase<ViewAdapterTe public void testBackgroundTint() throws Throwable { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - View view = mBinder.getBackgroundTint(); + View view = mBinder.backgroundTint; assertNotNull(view.getBackgroundTintList()); ColorStateList colorStateList = view.getBackgroundTintList(); assertEquals(mBindingObject.getBackgroundTint(), colorStateList.getDefaultColor()); @@ -100,7 +100,7 @@ public class ViewBindingAdapterTest extends BindingAdapterTestBase<ViewAdapterTe } public void testFadeScrollbars() throws Throwable { - View view = mBinder.getFadeScrollbars(); + View view = mBinder.fadeScrollbars; assertEquals(mBindingObject.getFadeScrollbars(), view.isScrollbarFadingEnabled()); changeValues(); @@ -109,7 +109,7 @@ public class ViewBindingAdapterTest extends BindingAdapterTestBase<ViewAdapterTe } public void testNextFocus() throws Throwable { - View view = mBinder.getNextFocus(); + View view = mBinder.nextFocus; assertEquals(mBindingObject.getNextFocusDown(), view.getNextFocusDownId()); assertEquals(mBindingObject.getNextFocusUp(), view.getNextFocusUpId()); @@ -131,7 +131,7 @@ public class ViewBindingAdapterTest extends BindingAdapterTestBase<ViewAdapterTe } public void testRequiresFadingEdge() throws Throwable { - View view = mBinder.getRequiresFadingEdge(); + View view = mBinder.requiresFadingEdge; assertTrue(view.isVerticalFadingEdgeEnabled()); assertFalse(view.isHorizontalFadingEdgeEnabled()); @@ -143,7 +143,7 @@ public class ViewBindingAdapterTest extends BindingAdapterTestBase<ViewAdapterTe } public void testScrollbar() throws Throwable { - View view = mBinder.getScrollbar(); + View view = mBinder.scrollbar; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { assertEquals(mBindingObject.getScrollbarDefaultDelayBeforeFade(), @@ -166,7 +166,7 @@ public class ViewBindingAdapterTest extends BindingAdapterTestBase<ViewAdapterTe public void testTransformPivot() throws Throwable { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { - View view = mBinder.getTransformPivot(); + View view = mBinder.transformPivot; assertEquals(mBindingObject.getTransformPivotX(), view.getPivotX()); assertEquals(mBindingObject.getTransformPivotY(), view.getPivotY()); diff --git a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ViewGroupBindingAdapterTest.java b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ViewGroupBindingAdapterTest.java index f9e44cd8fb8b..09aedd241b1e 100644 --- a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ViewGroupBindingAdapterTest.java +++ b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ViewGroupBindingAdapterTest.java @@ -34,7 +34,7 @@ public class ViewGroupBindingAdapterTest @Override protected void setUp() throws Exception { super.setUp(); - mView = mBinder.getView(); + mView = mBinder.view; } public void testDrawnWithCache() throws Throwable { diff --git a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ViewStubBindingAdapterTest.java b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ViewStubBindingAdapterTest.java index 9b63815d375d..57bbb5e2a602 100644 --- a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ViewStubBindingAdapterTest.java +++ b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ViewStubBindingAdapterTest.java @@ -33,7 +33,7 @@ public class ViewStubBindingAdapterTest @Override protected void setUp() throws Exception { super.setUp(); - mView = mBinder.getView(); + mView = mBinder.view; } public void testLayout() throws Throwable { diff --git a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/multiconfig/LandscapeConfigTest.java b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/multiconfig/LandscapeConfigTest.java index fde7c27f502a..9602d4cc798c 100644 --- a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/multiconfig/LandscapeConfigTest.java +++ b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/multiconfig/LandscapeConfigTest.java @@ -35,27 +35,17 @@ public class LandscapeConfigTest extends BaseLandDataBinderTest<MultiResLayoutBi public void testSharedViewIdAndVariableInheritance() throws InterruptedException, NoSuchMethodException, NoSuchFieldException { assertEquals("MultiResLayoutBindingLandImpl", mBinder.getClass().getSimpleName()); - assertMethod(TextView.class, "getObjectInLandTextView"); - assertMethod(TextView.class, "getObjectInDefaultTextView"); - assertMethod(View.class, "getObjectInDefaultTextView2"); - - assertField(TextView.class, "mObjectInLandTextView"); - assertField(TextView.class, "mObjectInDefaultTextView"); - assertField(TextView.class, "mObjectInDefaultTextView2"); + assertPublicField(TextView.class, "objectInLandTextView"); + assertPublicField(TextView.class, "objectInDefaultTextView"); + assertPublicField(View.class, "objectInDefaultTextView2"); assertField(NotBindableVo.class, "mObjectInLand"); assertField(NotBindableVo.class, "mObjectInDefault"); // includes - assertMethod(ViewDataBinding.class, "getIncludedLayoutConflict"); - assertMethod(BasicBindingBinding.class, "getIncludedLayoutShared"); - assertMethod(ConditionalBindingBinding.class, "getIncludedLayoutPort"); - assertMethod(ConditionalBindingBinding.class, "getIncludedLayoutLand"); - - assertField(IncludedLayoutBinding.class, "mIncludedLayoutConflict"); - assertField(BasicBindingBinding.class, "mIncludedLayoutShared"); - assertField(ConditionalBindingBinding.class, "mIncludedLayoutLand"); - - assertNoField("mIncludedLayoutPort"); + assertPublicField(ViewDataBinding.class, "includedLayoutConflict"); + assertPublicField(BasicBindingBinding.class, "includedLayoutShared"); + assertPublicField(ConditionalBindingBinding.class, "includedLayoutPort"); + assertPublicField(ConditionalBindingBinding.class, "includedLayoutLand"); } } diff --git a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/multiconfig/PortraitConfigTest.java b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/multiconfig/PortraitConfigTest.java index 1f5f735f0971..bd77f334b17a 100644 --- a/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/multiconfig/PortraitConfigTest.java +++ b/tools/data-binding/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/multiconfig/PortraitConfigTest.java @@ -34,29 +34,16 @@ public class PortraitConfigTest extends BaseDataBinderTest<MultiResLayoutBinding public void testSharedViewIdAndVariableInheritance() throws InterruptedException, NoSuchMethodException, NoSuchFieldException { assertEquals("MultiResLayoutBindingImpl", mBinder.getClass().getSimpleName()); - assertEquals("MultiResLayoutBindingImpl", mBinder.getClass().getSimpleName()); - assertMethod(TextView.class, "getObjectInLandTextView"); - assertMethod(TextView.class, "getObjectInDefaultTextView"); - assertMethod(View.class, "getObjectInDefaultTextView2"); - - assertNoField("mObjectInLandTextView"); - assertField(TextView.class, "mObjectInDefaultTextView"); - assertField(EditText.class, "mObjectInDefaultTextView2"); + assertPublicField(TextView.class, "objectInLandTextView"); + assertPublicField(TextView.class, "objectInDefaultTextView"); + assertPublicField(View.class, "objectInDefaultTextView2"); - assertNoField("mObjectInLand"); assertField(NotBindableVo.class, "mObjectInDefault"); - // includes - assertMethod(ViewDataBinding.class, "getIncludedLayoutConflict"); - assertMethod(BasicBindingBinding.class, "getIncludedLayoutShared"); - assertMethod(ConditionalBindingBinding.class, "getIncludedLayoutPort"); - assertMethod(ConditionalBindingBinding.class, "getIncludedLayoutLand"); - - assertField(BasicBindingBinding.class, "mIncludedLayoutConflict"); - assertField(BasicBindingBinding.class, "mIncludedLayoutShared"); - assertField(ConditionalBindingBinding.class, "mIncludedLayoutPort"); - - assertNoField("mIncludedLayoutLand"); + assertPublicField(ViewDataBinding.class, "includedLayoutConflict"); + assertPublicField(BasicBindingBinding.class, "includedLayoutShared"); + assertPublicField(ConditionalBindingBinding.class, "includedLayoutPort"); + assertPublicField(ConditionalBindingBinding.class, "includedLayoutLand"); } } diff --git a/tools/data-binding/library/src/main/java/android/databinding/ViewDataBinding.java b/tools/data-binding/library/src/main/java/android/databinding/ViewDataBinding.java index e4bb2f4b7586..d8247c53c429 100644 --- a/tools/data-binding/library/src/main/java/android/databinding/ViewDataBinding.java +++ b/tools/data-binding/library/src/main/java/android/databinding/ViewDataBinding.java @@ -282,7 +282,7 @@ public abstract class ViewDataBinding { * @param viewsWithIds A mapping of views with IDs but without expressions to the index * into the views array. */ - protected static void mapTaggedChildViews(View root, View[] views, SparseIntArray includes, + private static void mapTaggedChildViews(View root, View[] views, SparseIntArray includes, SparseIntArray viewsWithIds) { if (root instanceof ViewGroup) { ViewGroup viewGroup = (ViewGroup) root; @@ -315,6 +315,26 @@ public abstract class ViewDataBinding { } /** + * Walks the view hierarchy under root and pulls out tagged Views, includes, and views with + * IDs into a View[] that is returned. This is used to walk the view hierarchy once to find + * all bound and ID'd views. + * + * @param root The root of the view hierarchy to walk. + * @param numViews The total number of ID'd views and views with expressions. + * @param includes Views that are considered includes and should be treated as separate + * binders. + * @param viewsWithIds Views that don't have tags, but have IDs. + * @return An array of size numViews containing all Views in the hierarchy that have IDs + * (with elements in viewsWithIds) or are tagged containing expressions. + */ + protected static View[] mapChildViews(View root, int numViews, SparseIntArray includes, + SparseIntArray viewsWithIds) { + View[] views = new View[numViews]; + mapTaggedChildViews(root, views, includes, viewsWithIds); + return views; + } + + /** * Parse the tag without creating a new String object. This is fast and assumes the * tag is in the correct format. * @param str The tag string. diff --git a/tools/data-binding/samples/BindingDemo/app/src/main/java/com/android/example/bindingdemo/MainActivity.java b/tools/data-binding/samples/BindingDemo/app/src/main/java/com/android/example/bindingdemo/MainActivity.java index 54df3f14c9f8..8df4e6b043cb 100644 --- a/tools/data-binding/samples/BindingDemo/app/src/main/java/com/android/example/bindingdemo/MainActivity.java +++ b/tools/data-binding/samples/BindingDemo/app/src/main/java/com/android/example/bindingdemo/MainActivity.java @@ -48,12 +48,12 @@ public class MainActivity extends ActionBarActivity implements Observable { super.onCreate(savedInstanceState); dataBinder = MainActivityBinding.inflate(this); setContentView(dataBinder.getRoot()); - dataBinder.getRobotList().setHasFixedSize(true); - dataBinder.getToolkittyList().setHasFixedSize(true); + dataBinder.robotList.setHasFixedSize(true); + dataBinder.toolkittyList.setHasFixedSize(true); tkAdapter = new UserAdapter(Users.toolkities); robotAdapter = new UserAdapter(Users.robots); - dataBinder.getToolkittyList().setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)); - dataBinder.getRobotList().setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)); + dataBinder.toolkittyList.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)); + dataBinder.robotList.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)); dataBinder.setActivity(this); dataBinder.executePendingBindings(); } @@ -85,8 +85,8 @@ public class MainActivity extends ActionBarActivity implements Observable { if (selected == null) { return; } - selected.setName(dataBinder.getSelectedName().getText().toString()); - selected.setLastName(dataBinder.getSelectedLastname().getText().toString()); + selected.setName(dataBinder.selectedName.getText().toString()); + selected.setLastName(dataBinder.selectedLastname.getText().toString()); } }; @@ -110,10 +110,10 @@ public class MainActivity extends ActionBarActivity implements Observable { tkAdapter.remove(selected); selected.setGroup(User.ROBOT); robotAdapter.add(selected); - dataBinder.getRobotList().smoothScrollToPosition(robotAdapter.getItemCount() - 1); + dataBinder.robotList.smoothScrollToPosition(robotAdapter.getItemCount() - 1); } else { tkAdapter.add(selected); - dataBinder.getToolkittyList().smoothScrollToPosition(tkAdapter.getItemCount() - 1); + dataBinder.toolkittyList.smoothScrollToPosition(tkAdapter.getItemCount() - 1); selected.setGroup(User.TOOLKITTY); robotAdapter.remove(selected); } |