Android Studio -Как я могу пролистывать изображения, используя кнопки и операторы if-elseif? - PullRequest
0 голосов
/ 24 сентября 2019

Итак, в основном у меня есть 5 файлов изображений, и я сделал две кнопки для циклического перемещения по каждому изображению.«Предыдущая» и «Следующая».И когда цикл достигает 5-го изображения, после следующего нажатия кнопки «Далее» он возвращается к первому изображению.

Я достиг этой части, теперь моя проблема - мой цикл «Предыдущий», когдаон достигает 1-го изображения, после следующего нажатия кнопки «Предыдущий» он должен вернуться к 5-му изображению, затем к 4-му, затем к 3-му и т. д.

Я реализовал строку результата, чтобы отслеживатьзначения по мере того, как они увеличиваются / уменьшаются, как я уже говорил, прежде чем идти вперед, все работает отлично, просто возвращаясь назад, я сталкиваюсь с некоторыми ошибками.

    /* private ImageView iv1;
       private int imVal; */

public void next(View view) {
        if (imVal == 0) {
            imVal++;
            iv1.setImageResource((R.drawable.n1));
        } else if (imVal == 1) {
            imVal++;
            iv1.setImageResource((R.drawable.n2));
        } else if (imVal == 2) {
            imVal++;
            iv1.setImageResource((R.drawable.n3));
        } else if (imVal == 3) {
            imVal++;
            iv1.setImageResource((R.drawable.n4));
        } else if (imVal == 4) {
            imVal++;
            iv1.setImageResource((R.drawable.n5));
        } else {
            imVal = 0;
            imVal++;
            iv1.setImageResource((R.drawable.n1));
        }
        String result = String.valueOf(imVal);
        tv1.setText(result);
    }

    public void prev(View view) {



   if (imVal == 0) {
            imVal--;
            iv1.setImageResource((R.drawable.n5));
        } else if (imVal == 1) {
            imVal--;
            iv1.setImageResource((R.drawable.n1));
        } else if (imVal == 2) {
            imVal--;
            iv1.setImageResource((R.drawable.n2));
        } else if (imVal == 3) {
            imVal--;
            iv1.setImageResource((R.drawable.n3));
        } else if (imVal == 4) {
            imVal--;
            iv1.setImageResource((R.drawable.n4));
        } else {
            imVal = 4;
        }
    String result = String.valueOf(imVal);
    tv1.setText(result);
}

Мое изображение n1 - это просто картинка с номером 1 и так далее для остальных.Когда я перебираю "next", n1 соответствует моей строке результата.Но когда я перебираю свое «пред», все цифры исчезают.На некоторых числах моим изображениям потребуется два щелчка для циклического перехода назад (кнопка «предыдущая»).

Ответы [ 2 ]

0 голосов
/ 24 сентября 2019

Это потому, что вы уменьшаете, когда значение равно 0, и вы не проверяете значения меньше нуля.Замените ваш код следующим:

public void next(View view) { 
    if (imVal == 1) { 
        imVal++; 
        iv1.setImageResource((R.drawable.n2)); 
    } else if (imVal == 2) { 
        imVal++; 
        iv1.setImageResource((R.drawable.n3)); 
    } else if (imVal == 3) { 
        imVal++; 
        iv1.setImageResource((R.drawable.n4)); 
    } else if (imVal == 4) { 
        imVal++; 
        iv1.setImageResource((R.drawable.n5)); 
    } else { 
        imVal = 1; 
        iv1.setImageResource((R.drawable.n1)); 
    } 
    String result = String.valueOf(imVal); 
    tv1.setText(result); 
} 

public void prev(View view) { 
    if (imVal == 5) { 
        imVal--; 
        iv1.setImageResource((R.drawable.n4)); 
    } else if (imVal == 4) { 
        imVal--; 
        iv1.setImageResource((R.drawable.n3)); 
    } else if (imVal == 3) { 
        imVal--; 
        iv1.setImageResource((R.drawable.n2)); 
    } else if (imVal == 2) { 
        imVal--; 
        iv1.setImageResource((R.drawable.n1)); 
    } else { 
        imVal = 5; 
        iv1.setImageResource((R.drawable.n5)); 
    } 
    String result = String.valueOf(imVal); 
    tv1.setText(result); 
}
0 голосов
/ 24 сентября 2019

Вы можете реализовать круговой двусвязный список, где каждый узел принимает отрисовываемый идентификатор (который является целым числом), и просто вызывайте для него методы next и previous, не беспокоясь о сохранении правильного индекса.

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