В Java я легко могу передать статическую функцию в макет XML, используя:
public static String formatUnixTime(long timeInSeconds, String pattern) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern, Locale.US);
String value = simpleDateFormat.format(new Date(timeInSeconds * 1000));
return value;
}
в xml:
android:text='@{Utils.formatUnixTime(model.start_time, "hh:mm:ss")}'
Но я попробовал в Котлине с companion
, но не повезло. Он сказал
error: cannot find symbol
import my.package.name.HistoryItemBindingImpl;
^
symbol: class HistoryItemBindingImpl
location: package my.package.name
Это то, что я пробовал в kotlin
class Utils {
companion object {
fun formatUnixTime(timeInSeconds : Long, pattern: String) : String {
val simpleDateFormat = SimpleDateFormat(pattern, Locale.US)
val value = simpleDateFormat.format(Date(timeInSeconds * 1000))
return value
}
}
и в xml
android:text='@{Utils.Companion.formatUnixTime(model.start_time, "hh:mm:ss")}'
Действительно надеюсь, что кто-то может помочь. Спасибо!
Обновление
С помощью @Max Aves. Я исправил свой код и ниже код будет работать. Может быть, это кому-нибудь поможет.
class Utils {
companion object {
@JvmStatic
fun formatUnixTime(timeInSeconds : Long, pattern: String) : String {
val simpleDateFormat = SimpleDateFormat(pattern, Locale.US)
val value = simpleDateFormat.format(Date(timeInSeconds * 1000))
return value
}
И вы можете использовать это в XML
android:text='@{Utils.formatUnixTime(model.start_time, "hh:mm:ss")}'