检测单击父项时单击的子项

时间:2013-04-02 14:06:46

标签: android

我有一个包含大量图片的布局。我要做的是当点击图像时,我必须显示其细节。但是我不希望所有图像都有onClickListener。我怎样才能做到这一点?

3 个答案:

答案 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来统治它们。

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

  2. onClick()中,检查作为参数传递的View对象,以确定单击了哪些图像。您可以执行从getId()到将其投放到(ImageView)并获取实际图像的任何操作。

  3. 一旦您知道点击了哪张图片,就可以随意使用它。

答案 2 :(得分:0)

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