Я пытаюсь создать простой генератор случайных чисел, и все работает хорошо, вместо обновления ListView, когда я генерирую новые числа. Массив, Адаптер и ListView подключены правильно, поэтому, если значения добавляются в массив перед подключением к адаптеру, ListView показывает их правильно. Я пробовал разные способы очистить адаптер et c., Но он просто сделал приложение cra sh. Я знаю, что раньше (я не использовал Kotlin в течение нескольких месяцев) все работало хорошо, когда я добавил только adapter.notifyDataSetChanged()
.
Я буду sh кто-то узнает, что происходит.
MainActivity.kt
package com.example.randomnumber
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.view.View
import android.widget.*
import kotlin.random.Random
import kotlin.random.nextInt
class MainActivity : AppCompatActivity() {
lateinit var fromTextEdit : EditText
lateinit var toTextEdit : EditText
lateinit var amountTextEdit : EditText
lateinit var generatedListView: ListView
lateinit var generateButton : Button
var generatedArray : ArrayList<Int> = ArrayList()
lateinit public var arrayAdapter : ArrayAdapter<Int>
fun clickGenerate (view : View) {
Log.i("generateButton", "Button clicked")
generatedArray.clear()
if (fromTextEdit.text.toString() != "" && toTextEdit.text.toString() != "" && amountTextEdit.text.toString() != "") {
var amount = Integer.parseInt(amountTextEdit.text.toString())
if (Integer.parseInt(fromTextEdit.text.toString()) < Integer.parseInt(toTextEdit.text.toString())) {
Log.i("From", Integer.parseInt(fromTextEdit.text.toString()).toString())
Log.i("To", Integer.parseInt(toTextEdit.text.toString()).toString())
for (i in 0 until amount) {
generatedArray.add(
Random.nextInt(
Integer.parseInt(fromTextEdit.text.toString()),
Integer.parseInt(toTextEdit.text.toString()) + 1
)
)
}
} else {
Toast.makeText(this, "Incorrect values", Toast.LENGTH_LONG).show()
}
} else {
Toast.makeText(this, "Enter all values", Toast.LENGTH_SHORT).show()
}
for (i in generatedArray) {
Log.i("Generated", i.toString())
}
arrayAdapter.notifyDataSetChanged()
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
fromTextEdit = findViewById(R.id.fromEditText)
toTextEdit = findViewById(R.id.toEditText)
amountTextEdit = findViewById(R.id.amountEditText)
generatedListView = findViewById(R.id.generatedListView)
generateButton = findViewById(R.id.generateButton)
generatedArray.add(5)
generatedArray.add(5)
generatedArray.add(5)
generatedArray.add(5)
generatedArray.add(5)
generatedArray.add(5)
arrayAdapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, generatedArray.toList())
generatedListView.adapter = arrayAdapter
}
}