[英]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(它是一個整數),並且只需在其上調用next
和previous
方法,而不必擔心保持正確的索引。
這是因為您在值為 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.