2015-04-07 93 views

回答

2

你会必须在创建行时创建ImageView。这意味着您需要在getView()期间执行此操作。当创建新的ImageView时,使用iv.setClickable(true)使其可点击并将新的Clicklistener附加到图像上,该图像将在点击图像后处理图像的打开。如果每个图像都相同,则可以在适配器中实现onClickListener并将其添加到每个图像。如果所有图像都一样,这可能是一个明智的选择,就像打开刚才点击的图像一样。

在onClick回调中,您将看到点击源自于,因此您可以访问其ID或其标记,它会告诉您要显示的图像。

+0

感谢您的帮助。我会去尝试一下。我希望它会起作用。 –

+0

您必须检查imageview是否实际接收到单击事件,Row可能会捕获它。如果你不知道,我可能会检查我是如何解决这个问题的。不能记得它是如何完成的。 –

0

如果您正在使用自定义的ImageView为imagesthen利用该性质使ImageView的点击...

<ImageView 
android:clickable="true" 
android:onClick="Click" 
android:src="@drawable/img"> 
</ImageView> 

我认为这将有助于你...

+0

不这样做,你最终将不得不为每个图像的回调显示多个图像,如果你想能够动态添加图片到您的视图中,您只能添加尽可能多的图片,因为您有回调。 –

0

你必须使用适配器列表视图和点击 做这样的事情

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    Holder holder = null; 

    if (convertView == null) { 
     convertView = inf.inflate(R.layout.image, parent, false); 
     holder = new Holder(); 
     holder.im1 = (ImageView) convertView.findViewById(R.id.imageView1); 
     holder.im2 = (ImageView) convertView.findViewById(R.id.imageView2); 

     holder.im1.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       System.out.println("i is clicked"); 
      } 
     }); 

     holder.im2.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       System.out.println("2 is clicked"); 
      } 
     }); 
     convertView.setTag(holder); 
    } else { 
     convertView.getTag(); 
    } 

    return convertView; 
} 

public class Holder { 
    ImageView im1, im2; 
} 
+0

像这样你的ImageViews数量有限。如果你知道你永远不会有超过2张图片,那没关系。但如果你有更多?您将需要重新修改布局并执行一些隐藏/可见的逻辑。我宁愿用代码创建它们。 –