数据绑定时如何将整数转换为浮点数?
How does one convert an integer to a float while data binding?
我有一个 Int,它包含以十分之一为单位的十进制数,因此例如我的 int 包含 308
来表示十进制数 30.8
。我想使用数据绑定在 TextView 中显示此数字以及其他一些文本。我的 TextView 有以下文本条目:
android:text="@{String.format("my value: %.1f", @{viewModel.myValue}.toFloat()/10.0f)}"
构建失败,出现以下错误:
[databinding] {"msg":"cannot find method toFloat() in class java.lang.Integer","file":"app/src/main/res/layout/fragment_you.xml","pos":[{"line0":163,"col0":54,"line1":163,"col1":84}]}
有问题的值定义如下:
private val _myValue = MutableLiveData<Int>()
val myValue: LiveData<Int> = _myValue
我认为这意味着它是一个 Kotlin 整数,我可以在其上调用 Kotlin 函数,但显然它是一个 java 整数而我不能?
为什么我不能在那里打电话 toFloat()
?如何将此 Int 显示为十进制数?
我认为,它会起作用。
android:text="@{String.format("my value: %.1f", @{(Float)(viewModel.myValue)}/10.0f)}"
这可能对您有所帮助。
DataBindingConverter.kt
class DataBindingConverters {
companion object {
@JvmStatic
fun convertIntegerToFloat(value: Int?): Float {
return value/10.0f
}
}
}
XML 导入
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<import type="com.package.DataBindingConverter" />
</data>
.....
绑定到视图
<EditText
...
android:text="@={DataBindingConverter.convertIntegerToFloat(viewModel.myValue)}" />
在 xml 中,如果你想使用转换,你必须按照在 JAVA
中的方式进行
这里要转换成float
尝试使用 ->
android:text="@{String.format("my value: %.1f", Float.valueOf(@{viewModel.myValue})/10.0f)}"
.toFloat
将在 kotlin 类 中完成。在 xml 中你仍然必须使用 JAVA
我有一个 Int,它包含以十分之一为单位的十进制数,因此例如我的 int 包含 308
来表示十进制数 30.8
。我想使用数据绑定在 TextView 中显示此数字以及其他一些文本。我的 TextView 有以下文本条目:
android:text="@{String.format("my value: %.1f", @{viewModel.myValue}.toFloat()/10.0f)}"
构建失败,出现以下错误:
[databinding] {"msg":"cannot find method toFloat() in class java.lang.Integer","file":"app/src/main/res/layout/fragment_you.xml","pos":[{"line0":163,"col0":54,"line1":163,"col1":84}]}
有问题的值定义如下:
private val _myValue = MutableLiveData<Int>()
val myValue: LiveData<Int> = _myValue
我认为这意味着它是一个 Kotlin 整数,我可以在其上调用 Kotlin 函数,但显然它是一个 java 整数而我不能?
为什么我不能在那里打电话 toFloat()
?如何将此 Int 显示为十进制数?
我认为,它会起作用。
android:text="@{String.format("my value: %.1f", @{(Float)(viewModel.myValue)}/10.0f)}"
这可能对您有所帮助。
DataBindingConverter.kt
class DataBindingConverters {
companion object {
@JvmStatic
fun convertIntegerToFloat(value: Int?): Float {
return value/10.0f
}
}
}
XML 导入
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<import type="com.package.DataBindingConverter" />
</data>
.....
绑定到视图
<EditText
...
android:text="@={DataBindingConverter.convertIntegerToFloat(viewModel.myValue)}" />
在 xml 中,如果你想使用转换,你必须按照在 JAVA
中的方式进行这里要转换成float 尝试使用 ->
android:text="@{String.format("my value: %.1f", Float.valueOf(@{viewModel.myValue})/10.0f)}"
.toFloat
将在 kotlin 类 中完成。在 xml 中你仍然必须使用 JAVA