记录一下拦截器、点击回调这些的用法

2021-03-10  本文已影响0人  合拍v

菜🐔专属文章,大佬请跳过


背景

 当初啊,我给一个View设置点击事件,有一部分操作希望由用户完成。于是去问我大哥,大哥说把点击事件抛出去。🤔🤔
 抛出去,怎么抛,怎么抛,一开始我也不会,现在展示一下😏

  private View.OnClickListener mClick;
  ....

  mView.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        // 默认逻辑

        if (mClick != null) {
          // 这里就是外部实现的了
          mClick.onClick(v);
        }
      }
    });
  ....

  /**
   * 设置点击事件回调
   */
  public void setOnClickListener(View.OnClickListener listener) {
    mClick = listener;
  }
  view.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View v) {
            ....
          }
        });

 后来啊,我遇到了一个情况🐷,View里面希望有个判断条件,这个条件也是从外面传过来,这时候我大哥又说了,定义个拦截器就好了🐂

  private OnIntercept mOnIntercept;
  ....

  // 定义拦截器的接口
  public interface OnIntercept {
    // 因为是给列表每一项添加拦截器,所以穿进去item,不需要就没有参数咯~
    boolean isIntercept(ActionItem item);
  }
  ....

  mOnIntercept.isIntercept(item)

  public void setOnIntercept(OnIntercept intercept) {
    mOnIntercept = intercept;
  }
  view.setOnIntercept(new OnIntercept() {
          @Override
          public boolean isIntercept(ActionItem item) {
            return false/true;
          }
        });

 拦截器想在哪加在哪加,用处很多,我直呼高端操作🎉🎉。
 一起看下来的话其实和添加点击事件是一样的,新手对于回调这种东西总是很懵逼,用几次就get到意思了,把方法抛出去由外面实现,里面再拿来用。

上一篇 下一篇

猜你喜欢

热点阅读