Android按钮循环

时间:2014-05-17 11:32:44

标签: java android

我有这段代码:

private ImageView d1;
private ArrayList<Integer> listaImagenes = new ArrayList<Integer>();
private ArrayList<String> listaFrases = new ArrayList<String>();
private Button button;
private Integer contador = 0;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.rellenarImagenes();
    setContentView(R.layout.imagentonas);
    d1 = (ImageView) findViewById(R.id.imagenes01);
    while (contador < listaImagenes.size()) {
        d1.setImageResource(listaImagenes.get(contador));
        button = (Button) findViewById(R.id.botoncillo);
        button.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                contador++;
            }
        });
    }
}

private void rellenarImagenes() {
    listaImagenes.add(R.drawable.a01);
    listaImagenes.add(R.drawable.a02);
    listaImagenes.add(R.drawable.a03)
}

我正在尝试做一个循环,当我按下按钮,增加contador和d1更改图像。 但它不起作用,应用程序背景仍然是黑色而且不起作用。

3 个答案:

答案 0 :(得分:1)

在onclick方法中删除while循环和setimage。

答案 1 :(得分:0)

您期望修改变量contador的值会导致数组项发生变化。

请注意,在代码行d1.setImageResource(listaImagenes.get(contador));中,get函数会收到int。因此,在它被调用时,它会收到一个值,而不是对Integer的引用。更改contador的值时,不会更改用于获取数组中索引的值。

即使值发生了变化,d1仍将使用相同的资源。

您需要在onClickListener中执行的操作是添加代码来设置图像。

的内容
public void onClick(View v) {
    ++contador;
    if (contador >= listaImagenes.size())
    {
        contador=0;
    }
    //you'll probably need to modify the next line to be able to access the button variable.
    //one way to do it is to use a final variable in the onCreate method that creates this OnClickListener
    button.setImageResource(listaImagenes.get(contador));
}

不需要while循环。你的代码正在做的是将图像设置为数组的3个项目,一个接一个,并添加一个新的点击监听器3次。

答案 2 :(得分:0)

我将尝试回答并指出您在代码中存在的一些缺陷。

  1. wat是否有像R01,R02这样的100个抽奖......?相反,您可以使用使用字符串获取drawable。
  2. 你为什么要使用while循环?因为你有计数器,你可以直接使用它。
  3. 让我尝试编写代码

    int contador=1;
    @Override
     public void onCreate (Bundle savedInstanceState)
     {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.imagentonas);
              context=this;
              d1=(ImageView)findViewById(R.id.imagenes01);
              button=(Button)findViewById(R.id.botoncillo); 
              button=(Button)findViewById(R.id.botoncillo); 
    
              button.setOnClickListener( new  View . OnClickListener ()  { 
                public  void onClick ( View v )  { 
                        int id = context.getResources().getIdentifier("a"+contador,
                                 "drawable", context.getPackageName());  
                        d1.setImageResource(id);        
                        contador++;
                 } 
              }); 
      }
    

    注意:int id = context.getResources().getIdentifier("a"+contador,"drawable", context.getPackageName());这里使用你可以访问drawable的字符串,这解决了任意数量的连续drawable的问题。

    希望你明白这个概念......

    由于