从大整数设置进度条的最大值

时间:2018-08-09 11:18:12

标签: android kotlin numberformatexception

我是Kotlin的新手,自己学习。我有一个字符串为:

 "202026141059"

我将其转换为Int值,并将其设置为进度条最大值为:

 availableCreditProgress.max = queryBalancePicResponseData.available_credit!!.toString().toInt()

问题是它给了我 java.lang.NumberFormatException:无效的int:“ 202026141059”

有人可以指出我在做什么错吗? 预先感谢!

2 个答案:

答案 0 :(得分:1)

Int仅从Int.MIN_VALUE-2147483648Int.MAX_VALUE2147483647。您的值超出了该值...如果需要在某个地方输入值,请尝试toLong

由于ProgressBar仅允许Int本身,请尝试将其缩小到该比例……我会选择最大100

因此,如果您的最大值202026141059实际上是进度栏中的100,那么您就以0开始,如果达到2020261410,切换到1(或四舍五入),等等。

这是一个基本示例...当然,您可以用另一种方式来传递您的值,并以不同的方式使用它;-)我现在才打印它:

val maxValue = "202026141059".toLong()
var currentProgress = -1L
val scale = 100000
(0..(maxValue/scale)).forEach { curr ->
    currentProgress = (curr * 100 * scale / maxValue ).also {
        if (it != currentProgress) {
            println(it)
        }
    }
}

答案 1 :(得分:0)

如果必须处理不适合ProgressBar的大数字,则必须使用1000来缩放它们。
因此,值202026141059 must be divided by 1000 = 202026141.059并通过四舍五入这个数字,您将得到202026141,这将是max
必须使用您分配给ProgressBar的所有值来完成此操作。