From 39803a835c87d96d7ae163a21243084ce298a6fe Mon Sep 17 00:00:00 2001 From: Akash Yadav Date: Sat, 19 Nov 2022 09:42:57 +0530 Subject: [PATCH] fix: avoid unnecessary attribute lookup --- .../androidide/inflater/internal/ViewImpl.kt | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/ViewImpl.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/ViewImpl.kt index abf280803..85e4774b5 100644 --- a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/ViewImpl.kt +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/ViewImpl.kt @@ -49,7 +49,7 @@ constructor( updateAttribute(attribute) } else { this.attributes.add(attribute) - updateAttribute(attribute) + applyAttribute(attribute) } } @@ -61,6 +61,14 @@ constructor( override fun updateAttribute(attribute: IAttribute) { val existing = findAttribute(attribute) ?: throw IllegalArgumentException("Attribute '${attribute.name}' not found") existing.value = attribute.value + applyAttribute(existing) + } + + override fun findAttribute(namespaceUri: String, name: String): IAttribute? { + return this.attributes.find { it.namespace.uri == namespaceUri && it.name == name } + } + + protected open fun applyAttribute(attribute: IAttribute) { val adapter = AttributeAdapterIndex.getAdapter(name) if (adapter == null) { log.warn("No attribute adapter found for view $name") @@ -69,10 +77,6 @@ constructor( adapter.apply(this, attribute) } - override fun findAttribute(namespaceUri: String, name: String): IAttribute? { - return this.attributes.find { it.namespace.uri == namespaceUri && it.name == name } - } - protected open fun hasAttribute(attribute: IAttribute): Boolean { return hasAttribute(attribute.namespace.uri, attribute.name) }