所以基本上我有 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
方法,而不必担心保留正确的索引。