我有一个包含大量图片的布局。我要做的是当点击图像时,我必须显示其细节。但是我不希望所有图像都有onClickListener。我怎样才能做到这一点?
答案 0 :(得分:3)
您不必为所有图像使用不同的处理程序。而是为所有图像使用一个处理程序。这将使您的代码更清晰,易于管理并解决您的问题。
public void onCreate(Bundle bundle) {
//...
OnClickListener mHandler = new OnClickListener() {
@Override
public void onClick(View v) {
switch(v.getId()) {
case R.id.img1:
//..
break;
case R.id.img2:
//....
break;
}
}
};
ImageButton btn1 = (ImageButton)findViewById(R.id.img1);
ImageButton btn2 = (ImageButton)findViewById(R.id.img2);
//...
btn1.SetOnClickListener(mHandler);
btn2.SetOnClickListener(mHandler);
//...
}
答案 1 :(得分:2)
一个Listener
来统治它们。
在对象上实现onClick()
,将其注册为侦听器
在onClick()
中,检查作为参数传递的View
对象,以确定单击了哪些图像。您可以执行从getId()
到将其投放到(ImageView)
并获取实际图像的任何操作。
一旦您知道点击了哪张图片,就可以随意使用它。
答案 2 :(得分:0)
如果您希望为ImageView
(或其他)实现自定义行为,然后拥有该类型视图的多个实例,则应该将ImageView
子类化并将您的侦听器放在那里。然后你有一个封装的View
来实现你想要的自定义行为,如果你以后决定你想要更多或更少,或者把它们放在另一个地方,你很容易移动{{1及其行为而不会撕毁你的View
。