天天看点

Android中给View绑定多个OnClickListener接口

需求描述:

我们在自定义View的时候,如果想在View被点击时,动态的设置一些内部的属性(比如:选中状态),而又不想影响外部设置的点击事件,这就需要给View绑定两个或多个OnClickListener接口。

实现思路:

1)首先,我们需要在View内部定义一个List<OnClickListener> onClickListeners容器,来存放用户设置的OnClickListener接口;

2)重写View控件的setOnClickListener方法,把用户设置的OnClickListener接口添加到容器;

3)调用super.setOnClickListener方法,设置一个匿名内部OnClickListener实现类,并在onClick事件中依次遍历调用OnClickListener容器中接口的onClick方法;

具体代码:

    List<OnClickListener> onClickListeners;

    @Override

    public void setOnClickListener(OnClickListener listener) {

        if (onClickListeners==null){

            onClickListeners = new ArrayList<OnClickListener>();

        }

        onClickListeners.add(listener);

        super.setOnClickListener(new OnClickListener() {

            @Override

            public void onClick(View v) {

                //响应外部点击事件

                for (OnClickListener l:onClickListeners){

                    l.onClick(v);

                }

            }

        });

    }