首页 > 解决方案 > 用于已签名整数的 Android 数据绑定转换器

问题描述

我一直在试图弄清楚如何创建一个 DataBindingConverter 以允许对可能包含有符号整数的 edittext 字段进行双向数据绑定。目前,我的转换器功能如下所示。

@InverseMethod("convertStringToInt")
fun convertIntToString(value: Int?): String {
    return value?.toString() ?: ""
}

fun convertStringToInt(value: String): Int? {
    if (TextUtils.isEmpty(value) || !value.matches(Regex("-?\\d*"))) {
        return null
    }
    return value.toIntOrNull()
}

虽然这在技术上允许负值,但尝试以“-”符号开头自然地输入负数显然会失败,因为“-”不是 int,因此默认为 null 并将 edittext 设置为空字符串。现在我只是通过绑定可能包含负数作为字符串的edittext字段并在视图模型中需要时将它们解析出来来回避这个问题,但我想知道是否有更清洁的解决方案。

标签: androiddata-binding

解决方案


推荐阅读