[英]How to Iterate through a Java Arraylist one at a time
我如何遍历此ArrayList算法,以便每次输入代码时都可以更改imageView的背景...例如Code =“ 123456” | Background_1显示,代码=“ 123456” | Background_2显示...
enter = (ImageButton) findViewById(R.id.enter);
input = (EditText) findViewById(R.id.editText2);
punch_back_1 = (ImageView) findViewById(R.id.imageView6);
punch_back_2 = (ImageView) findViewById(R.id.imageView7);
punch_back_3 = (ImageView) findViewById(R.id.imageView8);
punch_back_4 = (ImageView) findViewById(R.id.imageView9);
final ArrayList<ImageView> array_image = new ArrayList<>();
array_image.add(punch_back_1);
array_image.add(punch_back_2);
array_image.add(punch_back_3);
array_image.add(punch_back_4);
enter.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
String code = input.getText().toString();
int i = 0;
if (code.equals("123456")) {
i++;
array_image.get(i).setImageResource(R.drawable.punch_front);
Toast.makeText(getApplication(), "Awarded 1 new punch", Toast.LENGTH_LONG).show();
}
} else if (event.getAction() == MotionEvent.ACTION_UP) {
input.setText(" ");
}
return false;
}
});
我都尝试过这两个:
for (int i = 0; i < 4; i++)
{
if (code.equals("123456"))
{
array_image.get(i).setImageResource(R.drawable.punch_front);
Toast.makeText(getApplication(), "Awarded 1 new punch", Toast.LENGTH_LONG).show();
}
}
int i = 0;
while (i < i)
{
array_image.get(i).setImageResource(R.drawable.punch_front);
Toast.makeText(getApplication(), "Awarded 1 new punch", Toast.LENGTH_LONG).show();
i++;
}
如果我没记错的话,它会做同样的事情。
下面的代码行最终为我工作。 onTouch Action_UP是我的罪魁祸首。 使用input.setText(null); 达到了我想要的效果,并保持了理智...
enter.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String code = input.getText().toString();
if (code.equals("123456") && index < array_image.size()) {
array_image.get(index).setImageResource(R.drawable.punch_front);
index++;
Toast.makeText(getApplication(), "Awarded " + index + " new punch", Toast.LENGTH_LONG).show();
input.setText(null);
}
}
});
编辑:我似乎误解了您的问题。 好像您想让图像在每次火灾事件中仅出现一次。
这样做将需要您做两件事。
另外,您当然也需要确保自己不会超出范围。
首先为该索引创建一个计数器作为成员。
private int index = 0;
接下来,您将想要做几乎之前要做的事情。 在您的事件监听器中:
if(code.equals("123456") && index < array_image.size())
{
array_image.get(index).setImageResource(R.drawable.punch_front);
index++;
}
这应该跟踪当前索引,为下一个事件增加其位置,并且在遍历数组中的项目之后,当您超出范围并尝试触发该事件时,它不应给您任何异常错误事件再次发生。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.