android 接口怎么创建对象,Android interface接口的使用笔记

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

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

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

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

if(bottomNavigatorView!= null) {

bottomNavigatorView.setOnBottomNavigatorViewItemClickListener(this);

}

被委托类:

public voidsetOnBottomNavigatorViewItemClickListener(OnBottomNavigatorViewItemClickListener listener) {

this.mOnBottomNavigatorViewItemClickListener= listener;

}

OnBottomNavigatorViewItemClickListenermOnBottomNavigatorViewItemClickListener;

public interfaceOnBottomNavigatorViewItemClickListener {

voidonBottomNavigatorViewItemClick(intposition, View view);

}

委托类实现方法

@Override  //实现了接口方法

public voidonBottomNavigatorViewItemClick(intposition, View view) {

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

setCurrentTab(position);

}

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

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

委托类代码:

@Override

public voidonViewCreated(View view,@Nullable Bundle savedInstanceState) {

super.onViewCreated(view, savedInstanceState);

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

tabLayout.setOnTabItemClickListener(newTabLayout.OnTabItemClickListener() {

@Override

public voidonTabItemClick(intposition, View view) {

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

setCurrentTab(position);

}

});

}

被委托类代码:

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

public interfaceOnTabItemClickListener {

voidonTabItemClick(intposition, View view);

}

//注意实现它的set方法

public voidsetOnTabItemClickListener(OnTabItemClickListener listener) {

this.mOnTabItemClickListener= listener;

}

触发入口

view.setOnClickListener(newOnClickListener() {

@Override

public voidonClick(View v) {

mOnTabItemClickListener.onTabItemClick(finalI, v);

}

});

这种方式不需要实现接口

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值