Я хотел бы сделать специальный формат текстового поля для преобразования в двойные. Однако я хочу использовать запятую для десятичного разделения вместо точек. Я занимался исследованием в течение нескольких дней и просмотрел руководство, но у меня все еще возникают проблемы. isDouble
похоже, не работает при использовании запятых. Даже если я использовал точки, данные форматируются неправильно при обратной записи (т.е. текстовое поле 12.13 становится в базе данных 1213.00). Вот что у меня есть на данный момент:
val format = DecimalFormat("##0.00", DecimalFormatSymbols(Locale.GERMAN))
textfield(model.size, converter = object : StringConverter<Number>() {
override fun toString(number: Number?) = format.format(number)
override fun fromString(string: String?) = try {
format.parse(string).toDouble() }
catch (e: ParseException) {0.0}
}){
filterInput {
val ba = mutableListOf<Boolean>().asObservable()
it.controlNewText.toCharArray().forEach { char ->
when {
char.isDigit() -> ba.add(true)
char == ',' -> ba.add(true)
else -> ba.add(false)
}
}
when{
ba.any{false} -> return@filterInput false
else -> return@filterInput true
}
}}