在 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")}'
但我在 Kotlin 中尝试使用 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")}'
最佳答案
您是否尝试过添加 @JvmStatic
注释?它应该有所帮助!
来自官方source :
Specifies that an additional static method needs to be generated from this element if it's a function. If this element is a property, additional static getter/setter methods should be generated.
关于android - Kotlin DataBinding 将静态函数传递到布局 xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53058509/