美文网首页
记录一下拦截器、点击回调这些的用法

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

作者: 合拍v | 来源:发表于2021-03-10 17:51 被阅读0次

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


    背景

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

    • 先是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里面希望有个判断条件,这个条件也是从外面传过来,这时候我大哥又说了,定义个拦截器就好了🐂

    • 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到意思了,把方法抛出去由外面实现,里面再拿来用。

    相关文章

      网友评论

          本文标题:记录一下拦截器、点击回调这些的用法

          本文链接:https://www.haomeiwen.com/subject/sqywqltx.html