Как сделать 2D ArrayList из EditText в Android Studio с помощью Kotlin?

'''

class MainActivity : AppCompatActivity() {
    private var button: Button? = null
    private var textList: ArrayList<ArrayList<EditText>> = arrayListOf(arrayListOf())
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        button = findViewById<Button>(R.id.solve)

          textList[0][0]=findViewById<EditText>(R.id.ed1)
          textList[0][1]=(findViewById(R.id.ed2))
          textList[0][2]=(findViewById(R.id.ed3))
          textList[0][3]=(findViewById(R.id.ed4))
          textList[0][4]=(findViewById(R.id.ed5))
}
}

'''

Я хотел сохранить EditText в 2D ArrayList, но вышеуказанный метод не работает. Не знаю почему, но приложение вылетает при открытии. Итак, как мне это сделать?

Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
0
0
19
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Этот:

val list: ArrayList<Int> = arrayListOf()
list[0] = 123

означает «заменить элемент с индексом 0 на 123». Но это пустой список, там является нет индекса 0. Представьте, что вместо него вы использовали индекс 2 — если вы мог что-то туда вставите, что будет по индексам 1 и 0? Чтобы что-то было 3-м в списке, должны быть 2-й и 1-й элементы, верно?

Вместо этого вы, вероятно, хотите массив:

private val rows = 5
private val columns = 5
private var textList: Array<Array<EditText>> = Array(rows) { arrayOfNulls(columns) }

Это создаст массив для каждой строки, и он будет заполнен нулями, по одному для каждого столбца. Затем вы можете назначить их с помощью findViewById (который может возвращать ноль, что было еще одной проблемой вашего ArrayList — он мог содержать только ненулевые EditText)

Вероятно, есть лучшие способы делать то, что вы делаете, но это ваша основная проблема здесь - не можете обновлять элементы в списке, которые не существуют. И массив имеет больше смысла для фиксированной структуры, к которой вы собираетесь обращаться по индексу.

Другие вопросы по теме