From bf0eac611e38a86312a0b00f5442fdc0bbb733f2 Mon Sep 17 00:00:00 2001
From: David Hontiveros Gordo
Date: Sun, 4 Jan 2026 22:08:37 +0100
Subject: [PATCH 1/5] ANDROID-16934/pr3-remove-databinding: Remove databinding
methods from "TextLink" component
---
.../main/java/com/telefonica/mistica/link/TextLink.kt | 11 +----------
1 file changed, 1 insertion(+), 10 deletions(-)
diff --git a/library/src/main/java/com/telefonica/mistica/link/TextLink.kt b/library/src/main/java/com/telefonica/mistica/link/TextLink.kt
index 7efbf6523..2546cc1df 100644
--- a/library/src/main/java/com/telefonica/mistica/link/TextLink.kt
+++ b/library/src/main/java/com/telefonica/mistica/link/TextLink.kt
@@ -6,8 +6,6 @@ import android.text.method.LinkMovementMethod
import android.util.AttributeSet
import androidx.annotation.ColorInt
import androidx.appcompat.widget.AppCompatTextView
-import androidx.databinding.BindingMethod
-import androidx.databinding.BindingMethods
import com.telefonica.mistica.R
import com.telefonica.mistica.link.MultiLink.CustomMultiLink
import com.telefonica.mistica.link.MultiLink.DefaultMultiLink
@@ -15,13 +13,6 @@ import com.telefonica.mistica.link.SingleLink.CustomSingleLink
import com.telefonica.mistica.link.SingleLink.DefaultSingleLink
import com.telefonica.mistica.util.getThemeColor
-@BindingMethods(
- BindingMethod(
- type = TextLink::class,
- attribute = "linkColor",
- method = "setLinkColor"
- ),
-)
class TextLink @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
@@ -41,7 +32,7 @@ class TextLink @JvmOverloads constructor(
movementMethod = LinkMovementMethod.getInstance()
highlightColor = Color.TRANSPARENT
- if (attrs != null) {
+ if (attrs != null) {
val styledAttrs =
context.theme.obtainStyledAttributes(attrs, R.styleable.TextLinkView, defStyleAttr, 0)
setLinkColor(styledAttrs.getColor(R.styleable.TextLinkView_linkColor, context.getThemeColor(R.attr.colorTextLink)))
From ac79f969d4d545239b2572d3ba4bd22900d8a084 Mon Sep 17 00:00:00 2001
From: David Hontiveros Gordo
Date: Sun, 4 Jan 2026 22:30:13 +0100
Subject: [PATCH 2/5] ANDROID-16934/pr3-remove-databinding: Remove databinding
methods from "ListRowView" and "MisticaRecyclerView" components and update
the corresponding README file
---
.../telefonica/mistica/list/ListRowView.kt | 128 ++++--------------
.../mistica/list/MisticaRecyclerView.kt | 9 --
.../com/telefonica/mistica/list/README.md | 4 +-
3 files changed, 26 insertions(+), 115 deletions(-)
diff --git a/library/src/main/java/com/telefonica/mistica/list/ListRowView.kt b/library/src/main/java/com/telefonica/mistica/list/ListRowView.kt
index 70f6ee229..ef72758a3 100644
--- a/library/src/main/java/com/telefonica/mistica/list/ListRowView.kt
+++ b/library/src/main/java/com/telefonica/mistica/list/ListRowView.kt
@@ -26,9 +26,6 @@ import androidx.constraintlayout.widget.ConstraintLayout
import androidx.constraintlayout.widget.ConstraintSet
import androidx.core.view.ViewCompat
import androidx.core.view.isVisible
-import androidx.databinding.BindingAdapter
-import androidx.databinding.BindingMethod
-import androidx.databinding.BindingMethods
import com.telefonica.mistica.R
import com.telefonica.mistica.badge.Badge
import com.telefonica.mistica.list.ListRowView.ContentDescriptionKeys.DESCRIPTION
@@ -43,89 +40,6 @@ import com.telefonica.mistica.util.getThemeColor
import com.telefonica.mistica.util.loadUrl
import com.telefonica.mistica.util.setAlpha
-@BindingMethods(
- BindingMethod(
- type = ListRowView::class,
- attribute = "listRowHeadlineLayout",
- method = "setHeadlineLayout"
- ),
- BindingMethod(
- type = ListRowView::class,
- attribute = "listRowHeadlineVisible",
- method = "setHeadlineVisible"
- ),
- BindingMethod(
- type = ListRowView::class,
- attribute = "listRowTitle",
- method = "setTitle"
- ),
- BindingMethod(
- type = ListRowView::class,
- attribute = "listRowTitleMaxLines",
- method = "setTitleMaxLines"
- ),
- BindingMethod(
- type = ListRowView::class,
- attribute = "listRowIsTitleHeading",
- method = "setTitleHeading"
- ),
- BindingMethod(
- type = ListRowView::class,
- attribute = "listRowSubtitle",
- method = "setSubtitle"
- ),
- BindingMethod(
- type = ListRowView::class,
- attribute = "listRowSubtitleMaxLines",
- method = "setSubtitleMaxLines"
- ),
- BindingMethod(
- type = ListRowView::class,
- attribute = "listRowDescription",
- method = "setDescription"
- ),
- BindingMethod(
- type = ListRowView::class,
- attribute = "listRowDescriptionMaxLines",
- method = "setDescriptionMaxLines"
- ),
- BindingMethod(
- type = ListRowView::class,
- attribute = "listRowAssetDrawable",
- method = "setAssetDrawable"
- ),
- BindingMethod(
- type = ListRowView::class,
- attribute = "listRowAssetType",
- method = "setAssetType"
- ),
- BindingMethod(
- type = ListRowView::class,
- attribute = "listRowIsBoxed",
- method = "setBoxed"
- ),
- BindingMethod(
- type = ListRowView::class,
- attribute = "backgroundType",
- method = "setBackgroundType"
- ),
- BindingMethod(
- type = ListRowView::class,
- attribute = "listRowActionLayout",
- method = "setActionLayout"
- ),
- BindingMethod(
- type = ListRowView::class,
- attribute = "listRowAssetHeight",
- method = "setAssetHeight"
- ),
- BindingMethod(
- type = ListRowView::class,
- attribute = "listRowAssetWidth",
- method = "setAssetWidth"
- ),
-)
-
@Suppress("LargeClass")
open class ListRowView @JvmOverloads constructor(
context: Context,
@@ -700,6 +614,30 @@ open class ListRowView @JvmOverloads constructor(
}
}
+ fun setListRowTitle(value: CharSequence?) {
+ setTitle(value)
+ }
+
+ fun setListRowSubtitle(value: CharSequence?) {
+ setSubtitle(value)
+ }
+
+ fun setListRowDescription(value: CharSequence?) {
+ setDescription(value)
+ }
+
+ fun setListRowHeadlineVisible(value: Boolean) {
+ setHeadlineVisible(value)
+ }
+
+ fun setListRowTitleMaxLines(value: Int) {
+ setTitleMaxLines(value)
+ }
+
+ fun setListRowIsTitleHeading(value: Boolean) {
+ if (value) setTitleHeading()
+ }
+
private fun showNonNumericBadge() {
Badge.removeBadge(badgeAnchor)
badgeAnchorContainer.visibility = View.VISIBLE
@@ -804,23 +742,5 @@ open class ListRowView @JvmOverloads constructor(
const val TYPE_IMAGE_7_10 = 4
const val TYPE_IMAGE_16_9 = 5
const val TYPE_IMAGE_ROUNDED = 6
-
- @BindingAdapter(
- value = ["listRowBadgeCount"],
- requireAll = false
- )
- @JvmStatic
- fun setNumericBadge(view: ListRowView, count: Int) {
- view.setNumericBadge(count)
- }
-
- @BindingAdapter(
- value = ["listRowBadgeVisible"],
- requireAll = false
- )
- @JvmStatic
- fun setBadge(view: ListRowView, show: Boolean) {
- view.setBadge(show)
- }
}
}
diff --git a/library/src/main/java/com/telefonica/mistica/list/MisticaRecyclerView.kt b/library/src/main/java/com/telefonica/mistica/list/MisticaRecyclerView.kt
index 24db0aaad..7b11f8e6f 100644
--- a/library/src/main/java/com/telefonica/mistica/list/MisticaRecyclerView.kt
+++ b/library/src/main/java/com/telefonica/mistica/list/MisticaRecyclerView.kt
@@ -3,20 +3,11 @@ package com.telefonica.mistica.list
import android.content.Context
import android.util.AttributeSet
import androidx.annotation.IntDef
-import androidx.databinding.BindingMethod
-import androidx.databinding.BindingMethods
import androidx.recyclerview.widget.RecyclerView
import com.telefonica.mistica.R
import com.telefonica.mistica.list.layout.configureWithBoxedLayout
import com.telefonica.mistica.list.layout.configureWithFullWidthLayout
-@BindingMethods(
- BindingMethod(
- type = MisticaRecyclerView::class,
- attribute = "listLayoutType",
- method = "setListLayoutType"
- )
-)
class MisticaRecyclerView : RecyclerView {
constructor(context: Context) : super(context) {
diff --git a/library/src/main/java/com/telefonica/mistica/list/README.md b/library/src/main/java/com/telefonica/mistica/list/README.md
index dcbc1256d..1630b469b 100644
--- a/library/src/main/java/com/telefonica/mistica/list/README.md
+++ b/library/src/main/java/com/telefonica/mistica/list/README.md
@@ -7,7 +7,7 @@
-Implemented as a custom view, `com.telefonica.mistica.ListRowView` can be used inside any layout like a regular view, including recyclable lists. It supports both **attribute configuration and databinding for all properties**.
+Implemented as a custom view, `com.telefonica.mistica.ListRowView can be used inside any layout like a regular view, including recyclable lists. It supports **attribute-based configuration for all properties**.
```xml
@@ -62,7 +62,7 @@ Implemented as a custom view, `com.telefonica.mistica.ListRowView` can be used i
* Full Width Layout --> `configureWithFullWidthLayout`
* Boxed Layout --> `configureWithBoxedLayout`
-Also `com.telefonica.mistica.MisticaRecyclerView` is just a `RecyclerView` that already supports previous layout styles by **both attribute configuration and databinding**:
+Also `com.telefonica.mistica.MisticaRecyclerView` is just a RecyclerView that already supports previous layout styles by **attribute-based configuration**.
```xml
From 60be45839415c6cebcf30d6e42744526492d5148 Mon Sep 17 00:00:00 2001
From: David Hontiveros Gordo
Date: Sun, 4 Jan 2026 22:32:22 +0100
Subject: [PATCH 3/5] ANDROID-16934/pr3-remove-databinding: Remove databinding
methods from "DeterminateStepperView" and "IndetermianteStepperView"
components
---
.../mistica/stepper/DeterminateStepperView.kt | 16 +---------------
.../mistica/stepper/IndeterminateStepperView.kt | 9 ---------
2 files changed, 1 insertion(+), 24 deletions(-)
diff --git a/library/src/main/java/com/telefonica/mistica/stepper/DeterminateStepperView.kt b/library/src/main/java/com/telefonica/mistica/stepper/DeterminateStepperView.kt
index 4f661446f..87119eb6a 100644
--- a/library/src/main/java/com/telefonica/mistica/stepper/DeterminateStepperView.kt
+++ b/library/src/main/java/com/telefonica/mistica/stepper/DeterminateStepperView.kt
@@ -7,27 +7,13 @@ import android.view.View
import android.widget.FrameLayout
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.constraintlayout.widget.ConstraintSet
-import androidx.constraintlayout.widget.ConstraintSet.END
import androidx.constraintlayout.widget.ConstraintSet.BOTTOM
+import androidx.constraintlayout.widget.ConstraintSet.END
import androidx.constraintlayout.widget.ConstraintSet.START
import androidx.constraintlayout.widget.ConstraintSet.TOP
-import androidx.databinding.BindingMethod
-import androidx.databinding.BindingMethods
import com.telefonica.mistica.R
import kotlin.math.roundToInt
-@BindingMethods(
- BindingMethod(
- type = DeterminateStepperView::class,
- attribute = "maxSteps",
- method = "setMaxSteps"
- ),
- BindingMethod(
- type = DeterminateStepperView::class,
- attribute = "step",
- method = "setStep"
- )
-)
class DeterminateStepperView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
diff --git a/library/src/main/java/com/telefonica/mistica/stepper/IndeterminateStepperView.kt b/library/src/main/java/com/telefonica/mistica/stepper/IndeterminateStepperView.kt
index 814b57111..2ce85ee35 100644
--- a/library/src/main/java/com/telefonica/mistica/stepper/IndeterminateStepperView.kt
+++ b/library/src/main/java/com/telefonica/mistica/stepper/IndeterminateStepperView.kt
@@ -7,17 +7,8 @@ import android.view.LayoutInflater
import android.view.animation.DecelerateInterpolator
import android.widget.LinearLayout
import android.widget.ProgressBar
-import androidx.databinding.BindingMethod
-import androidx.databinding.BindingMethods
import com.telefonica.mistica.R
-@BindingMethods(
- BindingMethod(
- type = IndeterminateStepperView::class,
- attribute = "progress",
- method = "setProgress"
- )
-)
class IndeterminateStepperView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
From 4bab5e06e6115b7fd560b54e9ab67fefa6f0fc9f Mon Sep 17 00:00:00 2001
From: David Hontiveros Gordo
Date: Sun, 4 Jan 2026 22:33:40 +0100
Subject: [PATCH 4/5] ANDROID-16934/pr3-remove-databinding: Remove databinding
methods from "TitleView" component
---
.../com/telefonica/mistica/title/TitleView.kt | 29 -------------------
1 file changed, 29 deletions(-)
diff --git a/library/src/main/java/com/telefonica/mistica/title/TitleView.kt b/library/src/main/java/com/telefonica/mistica/title/TitleView.kt
index 35774158c..4ce29c468 100644
--- a/library/src/main/java/com/telefonica/mistica/title/TitleView.kt
+++ b/library/src/main/java/com/telefonica/mistica/title/TitleView.kt
@@ -13,40 +13,11 @@ import androidx.annotation.VisibleForTesting
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.view.ViewCompat
import androidx.core.view.isVisible
-import androidx.databinding.BindingMethod
-import androidx.databinding.BindingMethods
import com.telefonica.mistica.R
import com.telefonica.mistica.util.getThemeColor
import com.telefonica.mistica.util.setTextAndVisibility
import com.telefonica.mistica.util.setTextPreset
-@BindingMethods(
- BindingMethod(
- type = TitleView::class,
- attribute = "title",
- method = "setTitle"
- ),
- BindingMethod(
- type = TitleView::class,
- attribute = "titleStyle",
- method = "setTitleStyle"
- ),
- BindingMethod(
- type = TitleView::class,
- attribute = "isTitleHeading",
- method = "setTitleHeading"
- ),
- BindingMethod(
- type = TitleView::class,
- attribute = "link",
- method = "setLink"
- ),
- BindingMethod(
- type = TitleView::class,
- attribute = "linkOnClick",
- method = "setOnLinkClickedListener"
- )
-)
class TitleView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
From 1ee18ffd4ce127df8991832bd122ac2cef67cfcc Mon Sep 17 00:00:00 2001
From: David Hontiveros Gordo
Date: Tue, 13 Jan 2026 16:41:05 +0100
Subject: [PATCH 5/5] ANDROID-16934/pr3-remove-databinding: Update correct word
in README file
---
library/src/main/java/com/telefonica/mistica/list/README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/library/src/main/java/com/telefonica/mistica/list/README.md b/library/src/main/java/com/telefonica/mistica/list/README.md
index 1630b469b..fc4f4d30b 100644
--- a/library/src/main/java/com/telefonica/mistica/list/README.md
+++ b/library/src/main/java/com/telefonica/mistica/list/README.md
@@ -7,7 +7,7 @@
-Implemented as a custom view, `com.telefonica.mistica.ListRowView can be used inside any layout like a regular view, including recyclable lists. It supports **attribute-based configuration for all properties**.
+Implemented as a custom view, `com.telefonica.mistica.ListRowView` can be used inside any layout like a regular view, including recyclable lists. It supports **attribute-based configuration for all properties**.
```xml