舒心、快乐,比什么都重要

View绑定式监听器实现原理

在我们开发android的时候,会经常重写自定义的View去满足一些需求

然后有时候view会提供一些回调,比如view某个部分被点击了,我们需要通知使用者然后再通过接口传一些参数过去。

对于我之前的做法是使用者就是某个用它的类去实现 implements 这个接口,然后当view被点击的时候就会传数据给这个接口

但是如果某个类使用了这个view你就得implements一个接口,然后如果需要继承的接口过多的话这个类实现的接口会变得很难管理

就比如前一篇文章写的仿网易云音乐的例子来说吧

我们给她绑定一个监听器

这个是那个回调(也就是那个需要绑定的监听器),Dialog里包含一个listview ,绑定监听器之后将list的item位置传给使用者(就是调用的地方)

public interface DialogListClickCallBack {
    void itemClick(int position);
}

我的Dialog内部怎么实现呢?

  private DialogListClickCallBack mListener;   //声明这个监听回调

  //加入set监听器函数 ,将监听器与自身的回调绑定   
  public void setOnclickListener(DialogListClickCallBack l){
        mListener = l;
    }

    使用的位置,调用监听接口的接口内方法,并将位置参数传出
   mListener.itemClick(position);

然后再使用的地方直接使用就可以了

myDialog.setOnclickListener(new DialogListClickCallBack() {
                    @Override
                    public void itemClick(int position) {
                        System.out.println("!!!position = "+position);

                    }
                });

完成!

posted @ 2016-09-29 18:44  Arcturis  阅读(377)  评论(0编辑  收藏  举报