Existe-t-il une possibilité d'utiliser la fonction d'extension avec une liaison de données? 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
Erreur
[kapt] Une exception s'est produite: Android.databinding.tool.util.LoggedErrorException: erreurs de liaison de données trouvées. ****/erreur de liaison de données **** msg: impossible de trouver la méthode streetName () dans la classe my.package.domain.country.model.City
Merci ;)
Vous devez d'abord importer CityKt en xml
<import type="my.package.domain.country.model.CityKt" />
dans la section des données, vous pouvez l'utiliser comme ceci
<TextView
Android:id="@+id/city"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="@{CityKt.streetName(city)}" />
Si vous examinez CityKt, vous verrez qu'il existe une méthode statique Java avec City comme premier argument