Java 如何将onClickListener单独添加到每个ImageView?
我以编程方式在Android中添加了一个线性布局,并向其中添加了ImageView。我使用下面的代码来实现同样的功能Java 如何将onClickListener单独添加到每个ImageView?,java,android,android-imageview,onclicklistener,Java,Android,Android Imageview,Onclicklistener,我以编程方式在Android中添加了一个线性布局,并向其中添加了ImageView。我使用下面的代码来实现同样的功能 LinearLayout layout = (LinearLayout)findViewById(R.id.linear1); for(int i=0;i<4;i++) { imagev = new ImageView(this); imagev.setLayoutParams(new android.view.ViewGroup.LayoutPa
LinearLayout layout = (LinearLayout)findViewById(R.id.linear1);
for(int i=0;i<4;i++)
{
imagev = new ImageView(this);
imagev.setLayoutParams(new android.view.ViewGroup.LayoutParams(300,150));
imagev.setMaxHeight(600);
imagev.setMaxWidth(600);
layout.addView(imagev);
}
LinearLayout布局=(LinearLayout)findViewById(R.id.linear1);
对于(int i=0;i您可以这样做:
myClickListener1 = new View.OnClickListener ...
myClickListener2 ...
myClickListener3 ...
myClickListener4 ...
for(int i=0;i<4;i++)
{
imagev = new ImageView(this);
imagev.setLayoutParams(new android.view.ViewGroup.LayoutParams(300,150));
imagev.setMaxHeight(600);
imagev.setMaxWidth(600);
switch(i){
case 0: imagev.setOnClickListener(myClickListener1);
break;
case 1: ...
...
}
layout.addView(imagev);
}
myClickListener1=new View.OnClickListener。。。
myClickListener2。。。
myClickListener3。。。
myClickListener4。。。
对于(int i=0;i如果要实现此功能,我将为每个imageview提供一个特定的标记,然后为每个imageview设置相同的onClickListener。然后在onClickListener中,我将检查单击的imageview的标记,并根据单击的imageview执行操作
LinearLayout layout = (LinearLayout)findViewById(R.id.linear1);
for(int i=0;i<4;i++)
{
imagev = new ImageView(this);
imagev.setLayoutParams(new android.view.ViewGroup.LayoutParams(300,150));
imagev.setMaxHeight(600);
imagev.setMaxWidth(600);
imagev.setTag(i);
imagev.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
switch(Integer.valueOf(v.getTag())) {
case 0: ...
break;
case 1: ...
break;
}
}
layout.addView(imagev);
}
LinearLayout布局=(LinearLayout)findViewById(R.id.linear1);
对于(int i=0;iYes,这是一种更优雅的方法!@Kasper非常感谢。@Kasper它在“switch(Integer.valueOf(v.getTag))”行中有一些错误。错误是“getTag无法解析或不是字段”“请帮助。这应该是一个函数调用,而不是变量调用,我在原始代码中犯了一个错误。请将'v.getTag'更改为'v.getTag()'并进行测试。@Kasper谢谢..它的工作方式只是将”switch(Integer.valueOf(v.getTag()){”更改为”switch((Integer)v.getTag()){”