[英]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.