我试图创建一个生成器,当我点击开始按钮,textview给了我一个随机数。这很有效,但我还是想显示数字,我点击停止所以它必须每隔几秒从可变列表中给我一个新的随机数。我怎么能这么做?我的第一个想法是,递归函数。
private fun run() {
var x = 0
var randomListe = mutableListOf<Int>()
randomListe.add(Random.nextInt())
x++
for (element in randomListe) {
var x = 0
val zahlInListe = randomListe[x]
// Thread.sleep(1_000)
// I tried while here
textView.text = ("${randomListe[x]} n das ist die Random Zahl morukn")
}
}
您可以在lifecycleScope
中launch
一个coroutine
块,您也可以删除多余的x
以保持当前的index
以显示最后一个值,您可以使用ArrayList
的last
方法来获得list
中的last
值
改变你的run
方法,并从它返回一个Job
对象,这样你就可以在用户点击stop
按钮时取消它。
private fun run(): Job {
return lifecycleScope.launch {
while(true){
delay(1000)
var randomListe = mutableListOf<Int>()
randomListe.add(Random.nextInt())
textView.text = ("${randomListe.last()} n das ist die Random Zahl morukn")
}
}
}
现在在调用run
方法时,将返回的job
值保存在一个变量中
private var job: Job? = null
job = run()
当用户轻按停止键时,对job
调用cancel
btnStop.setOnClickListener{
job?.cancel()
}