Kotlin:数据绑定的Java Util日期字符串

我想通过Databinding在视图中使用Data类中的Date值。 如果我使用日期字段上的toString()方法,它会起作用。但我想自定义日期值。 所以我用Method创建了Utils对象。这是util对象Kotlin:数据绑定的Java 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) 

这段代码有什么问题?

回答:

在科特林使用保留字对象,你真的做的是声明一个实例。 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)}" 

回答:

功能toSimpleString必须是静态的,所以:

object DateUtils { 

companion object {

fun toSimpleString(date: Date) : String {

val format = SimpleDateFormat("dd/MM/yyy")

return format.format(date)

}

}

}

回答:

你为什么不只是使用一个顶级函数默认是静态的?顶级函数没有在任何类中定义。

fun main(args: Array<String>){ 

println(toSimpleString(Date()))

}

fun toSimpleString(date: Date?) = with(date ?: Date()) {

SimpleDateFormat("dd/MM/yyy").format(this)

}

另外,还要注意Jouney的日期是如何在你的例子可空和你toSimpleString只接受一个非空的日期!

我改变了它,这样它会在返回null的情况下返回当前日期的字符串。

以上是 Kotlin:数据绑定的Java Util日期字符串 的全部内容, 来源链接: utcz.com/qa/263373.html

回到顶部