Расширение вызова в выражении привязки данных - PullRequest
0 голосов
/ 30 сентября 2019

Мне было интересно, есть ли какой-нибудь способ, которым мы можем вызывать расширения в выражениях attribs,

Например, вот какое-то расширение

fun String.parseServerDate():String{
 ...
}

Для вызова в котлине мы используем myTime.parseServerDate()

Итак, моя проблема в том, как я могу вызвать это расширение внутри на языке выражений

Tried @{mydate.parseServerDate()}, который не работает

Я попытался импортировать мой файл расширения ktв теге <import>, но ничего не происходит

Ответы [ 2 ]

0 голосов
/ 30 сентября 2019

Вы не можете использовать функции расширения в XML

, что вы можете сделать, это создать адаптер привязки данных для всего, что вы хотите сделать с представлением или создать объект, и поместить функцию в него, чтобы вы моглииспользуйте его там, где вам нравится

object Functions{
   fun parseServerDate(string : String) {
   ...
   }
}



//in xml

<import type="the object path"/>

@{Functions.parseServerDate(data.string)}

, чтобы я мог помочь вам больше, вы должны быть более точными в том, что вы хотите сделать, например, что делает функция расширения

, о которой вы можете прочитатьсвязующие адаптеры здесь https://developer.android.com/topic/libraries/data-binding/binding-adapters

0 голосов
/ 30 сентября 2019

Допустим, ваш метод расширения определен в ExtensionMethod.kt Импортируйте файл kt следующим образом:

<import type="yourpackage.ExtensionMethodKt"/>

Затем при вызове вашего расширения используйте следующий формат

@{ExtensionMethodKt.parseServerDate(mydate)}

Это должнорешить вашу проблему!

...