Is there any possibility to use extension function with a databinding? XML:
<data>
<import type="my.package.domain.country.model.City.streetName" />
<variable
name="city"
type="my.package.domain.country.model.City" />
</data>
<TextView
android:id="@+id/city"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{city.street.streetName()}" />
my.package.domain.country.model.city
data class City(
val id: String,
val street: Street
)
fun City.streetName(): String = street.houseNumber
Error
[kapt] An exception occurred: android.databinding.tool.util.LoggedErrorException: Found data binding errors. ****/ data binding error ****msg:cannot find method streetName() in class my.package.domain.country.model.City
Thanks ;)
You have to import CityKt firstly into xml
int the data section then you can use it like this
If you review CityKt you will see that there is static Java method with City as first argument
While @skiff2011 is correct, one could also use
alias
to prevent theKt
postfix.For example, a certain extension function is located in
ExtensionFunctionsKt
can be aliased byExtensionFunctions
The
ExtensionFunction
alias can now be used to call the extension function. The first argument still needs to be the extended class variable.