跟随https://developer.android.com/topic/libraries/data-binding/two-way#converters,我正在尝试为Android中的双向数据绑定实现数据转换器。
转换器的功能:
给定10位数字的电话号码,请在电话号码中添加国家/地区代码。XML代码:
<data> <import type="<package_name>.PhoneNumberStringConverter" /> <variable name="model" type="<package_name>.MyViewModel" /> </data> <androidx.appcompat.widget.AppCompatEditText android:text="@={PhoneNumberStringConverter.addExtension(model.storeDetailsEntity.storePhoneNumber)}" ... // Other irrelevant attributes are not shown />
转换器:
object PhoneNumberStringConverter { @InverseMethod("addExtension") @JvmStatic fun removeExtension(view: EditText, oldValue: String, value: String): String { return value.substring(3) } @JvmStatic fun addExtension(view: EditText, oldValue: String, value: String): String { return "+91$value" } }
当我在XML中添加转换器时,构建失败。找不到MyLayoutBindingImpl。绑定类生成问题。
注意:
1.双向数据绑定正在按预期方式工作,问题仅在于转换器。已经被推荐:
Two-way data binding Converter[跟随https://developer.android.com/topic/libraries/data-binding/two-way#converters,我正在尝试为Android中的双向数据绑定实现数据转换器。 ...
代码中存在一些问题。由于您使用的是双向绑定转换器,第一个问题是您尝试直接在xml中调用反向绑定适配器,但是按照我在ur转换器定义中看到的那样,绑定适配器为removeExtension