gpt4 book ai didi

android - Kotlin:用于数据绑定(bind)的 Java Util Date to String

转载 作者:太空狗 更新时间:2023-10-29 15:35:36 25 4
gpt4 key购买 nike

我想通过数据绑定(bind)在 View 中使用我的数据类的日期值。如果我在 Date 字段上使用 toString() 方法,它就可以工作。但我想自定义日期值。所以我用 Method 创建了 Utils 对象。这是 Util 对象

object DateUtils {

fun toSimpleString(date: Date) : String {
val format = SimpleDateFormat("dd/MM/yyy")
return format.format(date)
}
}

但是如果我想像这样在xml中使用这个方法

<data>
<import type="de.mjkd.journeylogger.Utils.DateUtils"/>

<variable
name="journey"
type="de.mjkd.journeylogger.data.Journey"/>
</data>
...
android:text="@{DateUtils.toSimpleString(journey.date)}"

我得到一个错误 cannot find method toSimpleString(java.util.Date) in class ...

这是我的数据类:

data class Journey(var title: String, var date: Date?, var destination: String)

这段代码有什么问题吗?

最佳答案

在 kotlin 中使用保留字 object,您真正要做的是声明一个实例。 Java 中的等效项或多或少类似于:

class DataUtils {
static DataUtils INSTANCE;
public String toSimpleString()...
}

然后当您调用它时,您会执行 DateUtils.INSTANCE.toSimpleString()

您应该能够在您的 xml 中使用 DateUtils.INSTANCE.toSimpleString()


为了使 toSimpleString 可从静态上下文访问,您必须使用 @JvmStatic 标记该方法

object DateUtils {
@JvmStatic
fun toSimpleString(date: Date) : String {
val format = SimpleDateFormat("dd/MM/yyy")
return format.format(date)
}
}

使用扩展函数( doc )

@file:JvmName("DateUtils")//Use this to change your class name in java, by default is <the file name>Kt (DateUtilsKt in your case)

fun Date.toSimpleString() : String {
val format = SimpleDateFormat("dd/MM/yyy")
return format.format(this)
}

然后你可以直接在 xml 中使用它,就像你已经在做的那样:

android:text="@{DateUtils.toSimpleString(journey.date)}"

关于android - Kotlin:用于数据绑定(bind)的 Java Util Date to String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47868672/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com