簡體   English   中英

Android Studio - 如何使用按鈕和 if-elseif 語句循環瀏覽我的圖像?

[英]Android Studio -How can I cycle through my images using a button and if-elseif statements?

所以基本上我有 5 個圖像文件,並且我制作了兩個按鈕來循環瀏覽每個圖像。 “上一個”和“下一個”。 當循環到達第 5 張圖像時,在下面的“下一步”按鈕上單擊,它將 go 回到第一張圖像。

我已經完成了那部分,現在我的問題是我的“上一個”循環,當它到達第一個圖像時,在下面的“上一個”按鈕單擊后應該循環回到第 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 的圖片,依此類推,它們是 rest。 當我循環瀏覽“下一個”時,n1 匹配我的結果字符串。 但是當我循環瀏覽我的“prev”時,數字都消失了。 在某些數字上,我的圖像需要單擊兩次才能向后循環(“上一個”按鈕)。

您可以實現一個循環雙向鏈表,其中每個節點都接受可繪制的 id(它是一個整數),並且只需在其上調用nextprevious方法,而不必擔心保持正確的索引。

這是因為您在值為 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); 
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM