データバインディングで拡張機能を使用する可能性はありますか? 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
エラー
[kapt]例外が発生しました:Android.databinding.tool.util.LoggedErrorException:データバインディングエラーが見つかりました。 **** /データバインディングエラー**** msg:クラスmy.package.domain.country.model.CityでメソッドstreetName()が見つかりません
ありがとう;)
まずCityKtをxmlにインポートする必要があります
<import type="my.package.domain.country.model.CityKt" />
データセクションをintにすると、次のように使用できます
<TextView
Android:id="@+id/city"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="@{CityKt.streetName(city)}" />
CityKtを確認すると、静的なJavaメソッドが最初の引数としてCityであることがわかります。