Я работаю над пошаговым секвенсором с 3 дорожками, и вращатели для выбора семпла доставляют мне некоторые проблемы. Следующий код выполняется при загрузке сохраненного шаблона для установки правильных образцов.
for ((index, j) in spinners.withIndex()){
val item = loadingPattern[(48+index)]
Log.i("item", item.toString())
Log.i("int", item.toInt().toString)
j.setSelection(item.toInt())
}
Массив "spinners" содержит 3 счетчика по 5 записей в каждом. «loadingPattern» - это строка, содержащая информацию о шаблоне. Последние три символа являются целыми числами, соответствующими положению счетчика. Когда выбор счетчика следующий:
Спиннер 1: Индекс выбранного элемента 0 Спиннер 2: Индекс выбранного элемента 3 Спиннер 3: Индекс выбранного элемента 4
В журнале "элемент" печатаются именно эти ценности. Журнал «int», однако, печатает 48 + index, поэтому в этом случае 48, 50, 52. Поскольку функция toInt () также вызывается для значения, анализируемого функцией .setSelection (), это исключение срабатывает:
java.lang.ArrayIndexOutOfBoundsException: length=2; index=48
Если у кого-то есть идея, почему это происходит, я был бы очень рад узнать. Большое спасибо всем вам! Я люблю это общение!
edit: если шаблон запрограммирован следующим образом: типичный шаблон
"patternString" имеет следующий вид: 101010101010101010000000100000001000100000001000100010001000420
активные шаги представлены 1, остальные на 0. Последние 3 цифры - это позиции счетчика. Может быть, это поможет:)
Редактировать 2: Я только что нашел этот вопрос: У меня есть строка с числами, когда я получаю символ из строки, он показывает '0'48 в kotlin. Как получить только один символ в kotlin И там говорят, что значение ASCII, равное 0, равно 48. Это означает, что toInt (), вероятно, возвращает значение ASCII, равное 0. Но почему это так и как можно Я получаю только обычное целое число?