android - 数据绑定(bind)时如何将整数转换为 float ?

标签 android kotlin string-formatting android-databinding

我有一个 Int,其中包含以十分之一为单位的十进制数,因此例如我的 int 包含 308 来表示十进制数 30.8。我想使用数据绑定(bind)在 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 显示为十进制数?

最佳答案

这可能对你有帮助。

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>
.....

绑定(bind)到 View

<EditText
    ...
    android:text="@={DataBindingConverter.convertIntegerToFloat(viewModel.myValue)}" />

关于android - 数据绑定(bind)时如何将整数转换为 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70444524/

相关文章:

java - Android 中无法解析 R

java - 在 Android EditText 中,有没有办法强制每个字符为小写?

JavaScript:使用自动换行格式化文本

java - 以 Clojure 格式(java.util.Formatter)、cl 格式(Common Lisp 格式)以编程方式控制填充?

java - 我如何使用 GreenDao LazyList 正确处理大量数据 + 排序和过滤

android - 层次结构查看器中的彩色气泡是什么意思?

Apache Beam 不支持 Kotlin Iterable?

kotlin - 如何按HashMap分组?

python - 为什么字符串变量在更改时不更新

Android TextView文本分割系统