2011-11-22 100 views
1

我创建了一个ImageView对象(img),并将一些资源通过同一个对象(img)传递给线性布局,其中for-loop。在循环的每次迭代中,我调用位于imgimg.setOnClickListener())上的setOnClickListener()以显示反映回路控制器变量(i)的值的Toast。该代码段我试过低于:onClickListener()的设置方式

for (i = 1; i <= 6; i++) 
       { 

    img = new ImageView(this); 

    img.setImageResource(R.drawable.thambu); 

    body.addView(img); 



    this.img.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 


    Toast.makeText(Details.this, Integer.toString(i) , Toast.LENGTH_LONG).show(); 


       } 
      }); 

     } 

的事情是每当我点击所产生的图像,我有一个吐司显示7

我知道为什么它显示7,但我想显示正在被点击的图像的索引。

是线性布局的在其上我通过一个ImageView的的ID)

我怎样才能做到这一点上的机器人。提前致谢。

回答

1
for (i = 1; i <= 6; i++) 
       { 

    img = new ImageView(this); 

    img.setImageResource(R.drawable.thambu); 

    body.addView(img); 
    img.setTag(i); 



    this.img.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
     int tagInt = (int) v.getTag(); 

    Toast.makeText(Details.this, Integer.toString(tagInt) , Toast.LENGTH_LONG).show(); 


       } 
      }); 

     } 

试试这个,我已经使用标签..

1

其实,这是一个相当一般的Java问题。

你应该做的事情如下所示:

for (int i = 1; i <= 6; i++) { 

    img = new ImageView(this); 

    img.setImageResource(R.drawable.thambu); 

    body.addView(img); 


    final int j = i; 
    this.img.setOnClickListener(new OnClickListener() { 
    public void onClick(View v) { 
     Toast.makeText(Details.this, Integer.toString(j) , Toast.LENGTH_LONG).show(); 
    } 
    }); 
} 
相关问题