我有一个包含大量图像的布局。我要做的是,当单击图像时,我必须显示其详细信息。但我不想对所有图像都有 onClickListeners。我怎样才能做到这一点?
问问题
1823 次
3 回答
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);
//...
}
于 2013-04-02T14:09:13.890 回答
2
一统Listener
天下。
在对象上实现
onClick()
,将其注册为侦听器在
onClick()
中,检查View
作为参数传递的对象以确定单击了哪些图像。你可以做任何事情,从getId()
投射到(ImageView)
实际图像。一旦您知道单击了哪个图像,请按照您的意愿进行操作。
于 2013-04-02T14:11:08.443 回答
0
如果您希望为一个ImageView
(或其他)实现自定义行为,然后拥有该类型视图的多个实例,您应该将其子类化ImageView
并将您的侦听器放在那里。然后你就有了一个封装View
来实现你想要的自定义行为,如果你以后决定你想要更多或更少或者它们,或者把它们放在另一个地方,很容易移动View
它及其行为而不会撕开你的Activity
.
于 2013-04-02T14:11:37.663 回答