Когда последняя строка удалена, это приводит к сбою приложения

Хорошо.. Вот моя проблема. У меня есть массив жала с 10 предметами в нем. Затем я рандомизирую список и отображаю случайную строку в текстовом виде. После удаления последней строки приложение вылетает. Любой совет, чтобы это исправить? Вот код:

    Collections.shuffle(learnlist);
    showlearntv.setText(learnlist.get(0));
    nextlearn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            showlearntv.setText(learnlist.get(1));
            learnlist.remove(0);

2 ответа

В обработчике кликов сначала удалите элемент,

learnlist.remove(0) 

Затем, если в списке есть какие-либо элементы,

showlearntv.setText(learnlist.get(0));

Остальное сделай что-нибудь еще.

Вы пытаетесь позвонить get(1) в списке, который может содержать менее двух элементов. Вы должны добавить некоторые проверки безопасности. Например:

nextlearn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        if (!learnlist.isEmpty()) {
            learnlist.remove(0);
        }
        if (!learnlist.isEmpty()) {
            showlearntv.setText(learnlist.get(0));
        }
    }
Другие вопросы по тегам