1

我有一个包含大量图像的布局。我要做的是,当单击图像时,我必须显示其详细信息。但我不想对所有图像都有 onClickListeners。我怎样才能做到这一点?

4

3 回答 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天下。

  1. 在对象上实现onClick(),将其注册为侦听器

  2. onClick()中,检查View作为参数传递的对象以确定单击了哪些图像。你可以做任何事情,从getId()投射到(ImageView)实际图像。

  3. 一旦您知道单击了哪个图像,请按照您的意愿进行操作。

于 2013-04-02T14:11:08.443 回答
0

如果您希望为一个ImageView(或其他)实现自定义行为,然后拥有该类型视图的多个实例,您应该将其子类化ImageView并将您的侦听器放在那里。然后你就有了一个封装View来实现你想要的自定义行为,如果你以后决定你想要更多或更少或者它们,或者把它们放在另一个地方,很容易移动View它及其行为而不会撕开你的Activity.

于 2013-04-02T14:11:37.663 回答