2012-06-10 41 views
1

我的Activity上有一系列ImageViews。当我想要执行某种方法时,我会执行一个方法。我有下一个:在许多视图上设置Onclick Android

public void onClick(View v) { 

      switch(v.getId()){ 

      case R.id.image1: 
       mymethod(1,1,movimientos,(ImageView)v); 
       break; 
      case R.id.image2: 
       ponerficha(1,2,movimientos,(ImageView)v); 
       break; 
      case R.id.image3: 
... 

但该方法没有执行,问题不是该方法,因为任何代码在案件不起作用。任何想法?

+0

有你'农具onClickListener'?并将OnClickListener设置为图像视图? – amp

回答

1

第一件事情你需要检查,如果你已经为注册onClickListener你的Images

image.setOnClickListener(this); 

(这个你有,如果你的类实现OnClickListener接口使用)

那么你如何声明和初始化ImageViews,是否有自己的ID。

image = (ImageView) findViewById(R.id.someId) 
anotherImage = (ImageView) findViewById(R.id.anotherId) 
... 

您可以onClickListeners工作像ANONYME类,如

image.setOnClickListener(
    new View.OnClickListener() { 
     public void onClick(View v) { 
     // some actions 
     } 
}); 

但更复杂,你有很多的小部件设置实施OnClickListener的情况更好。

public class ClassName extends Activity implements View.OnClickListener {} 
+0

谢谢,我忘记了image.setOnclickListener(this)! :) – Genaut

0

首先,你的活动必须实现View.OnClickListener像这样

public class myActivity implements View.OnClickListener { 

然后,你需要设置你的点击收听您ImageViews。如果你所有的ImageViews是在LinearLayout中,则代码应该是这样的

LinearLayout llImageViewHolder = (LinearLayout) findViewById(R.id.llImageViewHolder); 
for (int i = 0; i < llImageViewHolder.getChildCount(); i++ { 
    ImageView iv = (ImageView) llImageViewHolder.getChildAt(i); 
    iv.setOnClickListener(this); 
} 

干杯。

0

您需要将onClick处理程序添加到您有兴趣处理点击的每个视图。

你如何去做取决于你想如何处理点击事件。您可以使用hawaii.five-0的方法,并有一个事件处理程序的一切,或者你可以为每个视图项一个事件处理程序,其中你可以在你的活动的onCreate方法添加:

ImageView imageView = (ImageView) findViewById(R.id.image_view); 
imageView.setOnClickListener(new OnClickListener() 
{ 
    @Override 
    public void onClick(View v) 
    { 
     // Do something 
    } 
} 
相关问题