Android interface接口的使用笔记

Android的interface类似iOS的的协议委托Protocol,所以说尽管编程语言不通,但是思路是一致的!

1、传this实例给被委托类的interface对象

创建被委托类实例,传this过去

bottomNavigatorView = (BottomNavigatorView) findViewById(R.id.bottomNavigatorView);

if (bottomNavigatorView != null) {

    bottomNavigatorView.setOnBottomNavigatorViewItemClickListener(this);

}

被委托类:

public void setOnBottomNavigatorViewItemClickListener(OnBottomNavigatorViewItemClickListener listener) {

    this.mOnBottomNavigatorViewItemClickListener = listener;

}

OnBottomNavigatorViewItemClickListenermOnBottomNavigatorViewItemClickListener;

public interface OnBottomNavigatorViewItemClickListener {

    void onBottomNavigatorViewItemClick(int position, View view);

}

委托类实现方法

@Override  //实现了接口方法

public void onBottomNavigatorViewItemClick(int position, View view) {

    System.out.println("我响应了接口方法");

    setCurrentTab(position);

}

注意这种需要在委托类中实现接口implements BottomNavigatorView.OnBottomNavigatorViewItemClickListener


2、不传this实例给interface,而是直接在本类set方法中创建接口实例,然后响应接口的回调(实现接口的方法)

委托类代码:

@Override

public void onViewCreated(View view,@Nullable Bundle savedInstanceState) {

    super.onViewCreated(view, savedInstanceState);

    tabLayout = (TabLayout) view.findViewById(R.id.tabLayout);

    tabLayout.setOnTabItemClickListener(new TabLayout.OnTabItemClickListener() {

        @Override

        public void onTabItemClick(int position, View view) {

            System.out.println("点击当前tab");

            setCurrentTab(position);

        }

    });

}

被委托类代码:

private OnTabItemClickListenermOnTabItemClickListener;//定义一个监听tat点击事件的接口

public interface OnTabItemClickListener {

    void onTabItemClick(int position, View view);

}

//注意实现它的set方法

public void setOnTabItemClickListener(OnTabItemClickListener listener) {

    this.mOnTabItemClickListener = listener;

}

 触发入口

view.setOnClickListener(new OnClickListener() {

    @Override

    public void onClick(View v) {

        mOnTabItemClickListener.onTabItemClick(finalI, v);

    }

});

这种方式不需要实现接口


大家觉得常用哪种方式呢?

推荐阅读更多精彩内容

  • 以上内容是某木小叔子与某木的对话。挺为他小叔子着急的。到了谈婚论嫁的年纪,处了女朋友,如果不满足父亲的标准,要...
    theone_小虎阅读 31评论 0 0
  • 读书:要想输出必得输入,精读了《爱的教育》,被深深吸引,找到了一些写作素材,准备用到头条,拆解几篇文章。 发文:坚...
    洋木解忧阅读 351评论 4 14
  • 知识的诅咒 上一篇讲到既然黏性在广告创意以及生活中这么有用,那么为什么得不到广泛的应用?这是因为知识的诅咒现象。 ...
    myfire阅读 1,177评论 0 3
  • 8月,这些事。 出行,8月头去了香港。在旺角中旅社拿了淇的往来内地通行证,自己是去湾仔入境事务处拿了新的两年签证。...
    解语wxy阅读 107评论 5 0