Android Studio - 如何使用按钮和 if-elseif 语句循环浏览图像?



所以基本上我有 5 个图像文件,我做了两个按钮来循环浏览每个图像。"上一个"和"下一个"。当循环到达第 5 张图像时,在以下"下一步"按钮单击时,它将返回到第一张图像。

我已经完成了那部分,现在我的问题是我的"上一个"周期,当它到达第一个图像时,在下面的"上一个"按钮单击后,它应该循环回第 5 个图像,然后是第 4 个,然后是第三个,依此类推。

我已经实现了一个结果字符串来跟踪值,因为它们正在增加/减少,就像我在前进之前所说的那样,它运行得很好,只是向后走我遇到了一些错误。

/* 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 的图片,其余部分依此类推。 当我循环浏览"下一个"时,n1 与我的结果字符串匹配。但是当我循环浏览我的"上一个"时,数字都消失了。在某些数字上,我的图像需要两次单击才能向后循环("prev"按钮(。

这是因为当值为 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); 
}

您可以实现一个循环双向链表,其中每个节点接受可绘制 id(这是一个整数(,只需调用next并在其上previous方法,而不必担心保留正确的索引。

最新更新