android如何通过 Java Arraylist 之一在迭代time

标签: Java Android
发布时间: 2017/3/19 3:45:21
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

如何才能遍历此 ArrayList 算法,以便我能改变的背景 imageView 每个 time 我输入代码...例如代码 ="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++;
}

其中,如果没有记错的话做同样的事情。

下面一行代码最终是为我工作。onTouchAction_UP 是我的罪魁祸首。使用 input.setText(null);做同样的事情 effect 我想要和保留我的理智...

    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);
            }
        }
    });

解决方法 1:

编辑︰ 我似乎误解了你的问题。看起来好像你想要只出现一次每个火灾事件的图像。

这样做会需要你做两件事。

  1. 保持计数的指数,你就会改变。
  2. 增量索引后使用。

另外,你需要确保你不出门的界限以及当然。

首先创建一个计数器索引作为成员。

private int index = 0;

接下来你要做你在做之前差不多。在您的事件listener︰

if(code.equals("123456") && index < array_image.size())
{
    array_image.get(index).setImageResource(R.drawable.punch_front);
    index++;
}

这应该跟踪的当前索引,增加它的位置为下一个事件,和你已经通过您在阵列中的项目后,它不应该给你任何的异常错误,当你飞出界外,并尝试再次触发该事件。

官方微信
官方QQ群
31647020