Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将onClickListener单独添加到每个ImageView?_Java_Android_Android Imageview_Onclicklistener - Fatal编程技术网

Java 如何将onClickListener单独添加到每个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

我以编程方式在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.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()){”