Невозможно обновить sh ListView на Android. notifyDataSetChanged () не работает - PullRequest
0 голосов
/ 15 января 2020

Я пытаюсь создать простой генератор случайных чисел, и все работает хорошо, вместо обновления 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

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...